diff --git a/lib/galaxy/managers/datasets.py b/lib/galaxy/managers/datasets.py index 6480a990e1c..44e5dbe4b21 100644 --- a/lib/galaxy/managers/datasets.py +++ b/lib/galaxy/managers/datasets.py @@ -383,6 +383,9 @@ class _UnflattenedMetadataDatasetAssociationSerializer( base.ModelSerializer, 'meta_files' : self.serialize_meta_files, 'metadata' : self.serialize_metadata, + 'creating_job' : self.serialize_creating_job, + 'rerunnable' : self.serialize_rerunnable, + 'parent_id' : self.serialize_id, 'designation' : lambda i, k, **c: i.designation, @@ -446,6 +449,27 @@ class _UnflattenedMetadataDatasetAssociationSerializer( base.ModelSerializer, return metadata + def serialize_creating_job( self, dataset, key, **context ): + """ + Return the id of the Job that created this dataset (or its original) + or None if no `creating_job` is found. + """ + if dataset.creating_job: + return self.serialize_id( dataset.creating_job, 'id' ) + else: + return None + + def serialize_rerunnable( self, dataset, key, **context ): + """ + Return False if this tool that created this dataset can't be re-run + (e.g. upload). + """ + if dataset.creating_job: + tool = self.app.toolbox.get_tool( dataset.creating_job.tool_id, dataset.creating_job.tool_version ) + if tool and tool.is_workflow_compatible: + return True + return False + def serialize_converted_datasets( self, dataset_assoc, key, **context ): """ Return a file extension -> converted dataset encoded id map with all diff --git a/lib/galaxy/managers/hdas.py b/lib/galaxy/managers/hdas.py index 5165098bbfe..1ff4f98ff0f 100644 --- a/lib/galaxy/managers/hdas.py +++ b/lib/galaxy/managers/hdas.py @@ -328,9 +328,6 @@ class HDASerializer( # datasets._UnflattenedMetadataDatasetAssociationSerialize 'file_path' : self._remap_from( 'file_name' ), 'resubmitted' : lambda i, k, **c: self.hda_manager.has_been_resubmitted( i ), - 'creating_job' : self.serialize_creating_job, - 'rerunnable' : self.rerunnable, - 'display_apps' : self.serialize_display_apps, 'display_types' : self.serialize_old_display_applications, 'visualizations': self.serialize_visualization_links, @@ -435,19 +432,6 @@ class HDASerializer( # datasets._UnflattenedMetadataDatasetAssociationSerialize } return urls - def serialize_creating_job( self, hda, key, **context ): - if hda.creating_job: - return self.app.security.encode_id(hda.creating_job.id), - else: - return None - - def rerunnable( self, hda, key, **context ): - if hda.creating_job: - tool = self.app.toolbox.get_tool(hda.creating_job.tool_id, hda.creating_job.tool_version) - if tool and tool.is_workflow_compatible: - return True - return False - class HDADeserializer( datasets.DatasetAssociationDeserializer, taggable.TaggableDeserializerMixin,