From bb39b7d60b39eeae7f112edb42d9563731a725bf Mon Sep 17 00:00:00 2001 From: John Chilton Date: Fri, 8 Dec 2017 15:34:26 -0500 Subject: [PATCH] Provide UI collection output information for subworkflows. This fixes #5158 and should provide more correct extension based connection information as well. Includes a backport of #4346 which fixes #3120. --- lib/galaxy/workflow/modules.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index b30fce45ffdf..f667451cc07e 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -294,13 +294,29 @@ def get_data_outputs( self ): for workflow_output in self.subworkflow.workflow_outputs: output_step = workflow_output.workflow_step label = workflow_output.label - if label is None: - label = "%s:%s" % (output_step.order_index, workflow_output.output_name) + target_output_name = workflow_output.output_name + if not label: + label = "%s:%s" % (output_step.order_index, target_output_name) + output_module = module_factory.from_workflow_step(self.trans, output_step) + data_outputs = output_module.get_data_outputs() + target_output = {} + for data_output in data_outputs: + if data_output["name"] == target_output_name: + target_output = data_output output = dict( name=label, label=label, - extensions=['input'], # TODO + extensions=target_output.get('extensions', ['input']), ) + if target_output.get("collection"): + output["collection"] = True + output["collection_type"] = target_output["collection_type"] + # TODO: collection_type_source should be set here to be more percise/correct - + # but it can't be passed through as is since it would reference something + # the editor can't see. Since we fix input collection types to workflows + # the more correct thing to do would be to walk the subworkflow and + # determine the effective collection type if collection_type_source + # is set. outputs.append(output) return outputs