Skip to content

Commit c3390f7

Browse files
authored
Merge pull request #20987 from mvdbeek/user_defined_workflow_editor_fixes
[25.0] Fix PUT /api/workflows for user defined tools
2 parents 67d3f91 + 03a485e commit c3390f7

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/galaxy/workflow/modules.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2015,7 +2015,9 @@ def save_to_step(self, step, detached=False):
20152015
else:
20162016
step.tool_version = self.tool_version
20172017
if tool_uuid := getattr(self, "tool_uuid", None):
2018-
step.dynamic_tool = self.trans.app.dynamic_tool_manager.get_tool_by_uuid(tool_uuid)
2018+
tool = self.trans.app.toolbox.get_tool(tool_uuid=tool_uuid, user=self.trans.user)
2019+
if tool:
2020+
step.dynamic_tool = tool.dynamic_tool
20192021
if not detached:
20202022
for k, v in self.post_job_actions.items():
20212023
pja = self.__to_pja(k, v, step)

lib/galaxy_test/api/test_workflows.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@
2626
)
2727

2828
from galaxy.exceptions import error_codes
29+
from galaxy.tool_util_models import UserToolSource
2930
from galaxy.util import UNKNOWN
3031
from galaxy.util.unittest_utils import skip_if_github_down
32+
from galaxy_test.api.test_tools import TOOL_WITH_SHELL_COMMAND
3133
from galaxy_test.base import rules_test_data
3234
from galaxy_test.base.populators import (
3335
DatasetCollectionPopulator,
@@ -8085,6 +8087,33 @@ def test_cannot_run_workflow_on_immutable_history(self) -> None:
80858087
history_id=history_id,
80868088
)
80878089

8090+
def test_user_defined_workflow_update(self):
8091+
with self.dataset_populator.user_tool_execute_permissions():
8092+
unprivileged_tool = self.dataset_populator.create_unprivileged_tool(
8093+
UserToolSource(**TOOL_WITH_SHELL_COMMAND)
8094+
)
8095+
# Workflow doesn't matter, we're replacing it in the update
8096+
workflow = self.workflow_populator.load_workflow_from_resource("test_workflow_pause")
8097+
workflow_id = self.workflow_populator.create_workflow(workflow)
8098+
update_response = self._update_workflow(
8099+
workflow_id,
8100+
{
8101+
"steps": {
8102+
"0": {
8103+
"content_id": "cat_user_defined",
8104+
"id": 1,
8105+
"input_connections": {"datasets": []},
8106+
"name": "Concatenate Files",
8107+
"tool_uuid": unprivileged_tool["uuid"],
8108+
"type": "tool",
8109+
}
8110+
},
8111+
},
8112+
)
8113+
assert update_response.status_code == 200, update_response.text
8114+
workflow = self.workflow_populator.download_workflow(workflow_id)
8115+
assert workflow["steps"]["0"]["tool_representation"]["class"] == "GalaxyUserTool"
8116+
80888117
def _invoke_paused_workflow(self, history_id):
80898118
workflow = self.workflow_populator.load_workflow_from_resource("test_workflow_pause")
80908119
workflow_id = self.workflow_populator.create_workflow(workflow)

0 commit comments

Comments
 (0)