diff --git a/lib/galaxy/managers/datasets.py b/lib/galaxy/managers/datasets.py index db0fdb37945..35c6d0a2dfa 100644 --- a/lib/galaxy/managers/datasets.py +++ b/lib/galaxy/managers/datasets.py @@ -190,7 +190,7 @@ class DatasetSerializer(base.ModelSerializer[DatasetManager], deletable.Purgable "extra_files_path": self.serialize_extra_files_path, "permissions": self.serialize_permissions, "total_size": lambda item, key, **context: int(item.get_total_size()), - "file_size": lambda item, key, **context: int(item.get_size()), + "file_size": lambda item, key, **context: int(item.get_size(calculate_size=False)), } self.serializers.update(serializers) @@ -522,9 +522,9 @@ class _UnflattenedMetadataDatasetAssociationSerializer(base.ModelSerializer[T], "extra_files_path": self._proxy_to_dataset(serializer=self.dataset_serializer.serialize_extra_files_path), "permissions": self._proxy_to_dataset(serializer=self.dataset_serializer.serialize_permissions), # TODO: do the sizes proxy accurately/in the same way? - "size": lambda item, key, **context: int(item.get_size()), + "size": lambda item, key, **context: int(item.get_size(calculate_size=False)), "file_size": lambda item, key, **context: self.serializers["size"](item, key, **context), - "nice_size": lambda item, key, **context: item.get_size(nice_size=True), + "nice_size": lambda item, key, **context: item.get_size(nice_size=True, calculate_size=False), # common to lddas and hdas - from mapping.py "copied_from_history_dataset_association_id": self.serialize_id, "copied_from_library_dataset_dataset_association_id": self.serialize_id, diff --git a/lib/galaxy/managers/library_datasets.py b/lib/galaxy/managers/library_datasets.py index 8019e634dda..c0ebb49c40b 100644 --- a/lib/galaxy/managers/library_datasets.py +++ b/lib/galaxy/managers/library_datasets.py @@ -242,7 +242,7 @@ class LibraryDatasetsManager(datasets.DatasetAssociationManager): rval["deleted"] = ld.deleted rval["folder_id"] = f"F{rval['folder_id']}" rval["full_path"] = full_path - rval["file_size"] = util.nice_size(int(ldda.get_size())) + rval["file_size"] = util.nice_size(int(ldda.get_size(calculate_size=False))) rval["date_uploaded"] = ldda.create_time.isoformat() rval["update_time"] = ldda.update_time.isoformat() rval["can_user_modify"] = trans.user_is_admin or trans.app.security_agent.can_modify_library_item( diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 99f1883c842..ca9405a6451 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -3568,18 +3568,21 @@ class Dataset(Base, StorableObject, Serializable, _HasTable): else: return self.object_store.size(self) - def get_size(self, nice_size=False): + def get_size(self, nice_size=False, calculate_size=True): """Returns the size of the data on disk""" if self.file_size: if nice_size: return galaxy.util.nice_size(self.file_size) else: return self.file_size - else: + elif calculate_size: + # Hopefully we only reach this branch in sessionless mode if nice_size: return galaxy.util.nice_size(self._calculate_size()) else: return self._calculate_size() + else: + return self.file_size or 0 def set_size(self, no_extra_files=False): """Sets the size of the data on disk. @@ -4018,11 +4021,11 @@ class DatasetInstance(UsesCreateAndUpdateTime, _HasTable): self.clear_associated_files() _get_datatypes_registry().change_datatype(self, new_ext) - def get_size(self, nice_size=False): + def get_size(self, nice_size=False, calculate_size=True): """Returns the size of the data on disk""" if nice_size: - return galaxy.util.nice_size(self.dataset.get_size()) - return self.dataset.get_size() + return galaxy.util.nice_size(self.dataset.get_size(calculate_size=calculate_size)) + return self.dataset.get_size(calculate_size=calculate_size) def set_size(self, **kwds): """Sets and gets the size of the data on disk""" diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index 2bff35929a1..f9ef78c8979 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -357,7 +357,9 @@ class LibraryDatasetsController(BaseGalaxyAPIController, UsesVisualizationMixin, trans.sa_session.flush() rval = trans.security.encode_all_ids(library_dataset.to_dict()) - nice_size = util.nice_size(int(library_dataset.library_dataset_dataset_association.get_size())) + nice_size = util.nice_size( + int(library_dataset.library_dataset_dataset_association.get_size(calculate_size=False)) + ) rval["file_size"] = nice_size rval["update_time"] = library_dataset.update_time.strftime("%Y-%m-%d %I:%M %p") rval["deleted"] = library_dataset.deleted diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index 1efe103fb33..4ac46a20a13 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -128,7 +128,7 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): current_user_roles, content_item.library_dataset_dataset_association.dataset ) ) - raw_size = int(content_item.library_dataset_dataset_association.get_size()) + raw_size = int(content_item.library_dataset_dataset_association.get_size(calculate_size=False)) nice_size = util.nice_size(raw_size) update_time = content_item.library_dataset_dataset_association.update_time.isoformat()