diff --git a/lib/galaxy/managers/workflows.py b/lib/galaxy/managers/workflows.py index 6106d0043517..58bc7e52a2b6 100644 --- a/lib/galaxy/managers/workflows.py +++ b/lib/galaxy/managers/workflows.py @@ -1335,9 +1335,16 @@ def _workflow_to_dict_export(self, trans, stored=None, workflow=None, internal=F """ annotation_str = "" tag_str = "" + annotation_owner = None if stored is not None: if stored.id: - annotation_str = self.get_item_annotation_str(trans.sa_session, trans.user, stored) or "" + # if the active user doesn't have an annotation on the workflow, default to the owner's annotation. + annotation_owner = stored.user + annotation_str = ( + self.get_item_annotation_str(trans.sa_session, trans.user, stored) + or self.get_item_annotation_str(trans.sa_session, annotation_owner, stored) + or "" + ) tag_str = stored.make_tag_string_list() else: # dry run with flushed workflow objects, just use the annotation @@ -1370,8 +1377,10 @@ def _workflow_to_dict_export(self, trans, stored=None, workflow=None, internal=F module = module_factory.from_workflow_step(trans, step) if not module: raise exceptions.MessageException(f"Unrecognized step type: {step.type}") - # Get user annotation. + # Get user annotation if it exists, otherwise get owner annotation. annotation_str = self.get_item_annotation_str(trans.sa_session, trans.user, step) or "" + if not annotation_str and annotation_owner: + annotation_str = self.get_item_annotation_str(trans.sa_session, annotation_owner, step) or "" content_id = module.get_content_id() if allow_upgrade else step.content_id # Export differences for backward compatibility tool_state = module.get_export_state()