From ff0f0b611282fb0c4c5742c034f7cef0ec86f475 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Mon, 26 Mar 2018 13:35:22 -0400 Subject: [PATCH] Fix model operations that produce datasets for 78babab6455f4cd1c51aed0b1ddf6b4b29ad6d03 Should only affect unzip I think - fixes #5780 - probably need to rebuild collections though, collections built in the meantime are going to be broken in the DB. Includes test case that fails against 18.01. --- lib/galaxy/tools/actions/model_operations.py | 7 +++++++ test/api/test_tools.py | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/tools/actions/model_operations.py b/lib/galaxy/tools/actions/model_operations.py index 5633104ffe0..427afd834b8 100644 --- a/lib/galaxy/tools/actions/model_operations.py +++ b/lib/galaxy/tools/actions/model_operations.py @@ -69,5 +69,12 @@ class ModelOperationToolAction(DefaultToolAction): def _produce_outputs(self, trans, tool, out_data, output_collections, incoming, history, tags): tool.produce_outputs(trans, out_data, output_collections, incoming, history=history, tags=tags) + mapped_over_elements = output_collections.dataset_collection_elements + if mapped_over_elements: + for name, value in out_data.items(): + if name in mapped_over_elements: + value.visible = False + mapped_over_elements[name].hda = value + trans.sa_session.add_all(out_data.values()) trans.sa_session.flush() diff --git a/test/api/test_tools.py b/test/api/test_tools.py index bca7e77c18e..3c8a85041b3 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -168,7 +168,11 @@ class ToolsTestCase(api.ApiTestCase): } } self.dataset_populator.wait_for_history(history_id, assert_ok=True) - self._run("__UNZIP_COLLECTION__", history_id, inputs, assert_ok=True) + response = self._run("__UNZIP_COLLECTION__", history_id, inputs, assert_ok=True) + implicit_collections = response["implicit_collections"] + self.assertEquals(len(implicit_collections), 2) + unzipped_hdca = self.dataset_populator.get_history_collection_details(history_id, hid=implicit_collections[0]["hid"]) + assert unzipped_hdca["elements"][0]["element_type"] == "hda", unzipped_hdca def test_zip_inputs(self): with self.dataset_populator.test_history() as history_id: