diff --git a/server/web2py/applications/vidjil/models/SampleSet.py b/server/web2py/applications/vidjil/models/SampleSet.py index 93c21552f30e81f635619c88e3f7c01424ae85c1..acc9621a5154deed3510b0c7649f670609582d63 100644 --- a/server/web2py/applications/vidjil/models/SampleSet.py +++ b/server/web2py/applications/vidjil/models/SampleSet.py @@ -75,9 +75,15 @@ class SampleSet(object): def get_creator(self, data): return data['creator'] + def get_files_values(self, data): + key = get_file_sizes_select() + tmp = [] if data._extra[key] is None else data._extra[key].split(',') + file_count = len(tmp) + sizes = [int(s.split(';')[1]) for s in tmp] + return file_count, sum(sizes) + def get_files(self, data): - size = 0 if data['size'] is None else data['size'] - file_count = 0 if data['file_count'] is None else data['file_count'] + file_count, size = self.get_files_values(data) return '%d (%s)' % (file_count, vidjil_utils.format_size(size)) def get_fields(self): @@ -221,3 +227,6 @@ def get_config_names_select(): def get_group_names_select(): return "GROUP_CONCAT(DISTINCT auth_group.role)" + +def get_file_sizes_select(): + return "GROUP_CONCAT(DISTINCT CONCAT(sequence_file.id, ';', sequence_file.size_file))" diff --git a/server/web2py/applications/vidjil/models/sample_set_list.py b/server/web2py/applications/vidjil/models/sample_set_list.py index 328302bde6f24fabaf915ecc5e0b93e5342904f9..46b584c69182edd7f39a786963fc46e3f2092662 100644 --- a/server/web2py/applications/vidjil/models/sample_set_list.py +++ b/server/web2py/applications/vidjil/models/sample_set_list.py @@ -42,6 +42,7 @@ class SampleSetList(): group_config_ids = get_config_ids_select() group_config_names = get_config_names_select() group_group_names = get_group_names_select() + group_file_sizes = get_file_sizes_select() dedicated_fields = helper.get_dedicated_fields() @@ -65,8 +66,7 @@ class SampleSetList(): s_table.sample_set_id.with_alias('sample_set_id'), s_table.info.with_alias('info'), db.auth_user.last_name.with_alias('creator'), - db.sequence_file.size_file.sum().with_alias('size'), - db.sequence_file.id.count(distinct=True).with_alias('file_count'), + group_file_sizes, db.anon_permission.name.with_alias('has_permission'), group_configs, group_config_ids, diff --git a/server/web2py/applications/vidjil/views/sample_set/all.html b/server/web2py/applications/vidjil/views/sample_set/all.html index cf5c6252a83a129cf1363adf43318f8d9193b933..3d19d9efcf74887033d86f9512e80e3981f611dd 100644 --- a/server/web2py/applications/vidjil/views/sample_set/all.html +++ b/server/web2py/applications/vidjil/views/sample_set/all.html @@ -45,8 +45,7 @@ {{= field['call'](data)}} {{ pass }} - {{ file_count = 0 if data.file_count is None else data.file_count }} - {{ size = 0 if data.size is None else data.size }} + {{ file_count, size = helper.get_files_values(data) }} {{ total_file_count += file_count ; total_size += size }} {{if isAdmin:}} {{else:}} {{pass}}