From 1366223b76afe13784f720815eae0e29ab7b07c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 23 Mar 2016 10:00:40 +0100 Subject: [PATCH] workflows: redirect to correct status in case of multiple triggers (#10388) --- tests/test_form_pages.py | 21 ++++++++++++++++++++- wcs/wf/jump.py | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 9ca3a1f..97f5e89 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -2377,7 +2377,15 @@ def test_form_workflow_trigger(pub): jump.status = 'st2' st1.items.append(jump) jump.parent = st1 + + jump2 = JumpWorkflowStatusItem() + jump2.trigger = 'YYY' + jump2.status = 'st3' + st1.items.append(jump2) + jump2.parent = st1 + st2 = workflow.add_status('Status2', 'st2') + st3 = workflow.add_status('Status3', 'st3') workflow.store() formdef.workflow_id = workflow.id @@ -2405,7 +2413,18 @@ def test_form_workflow_trigger(pub): user.store() resp = app.post(formdata.get_url() + 'jump/trigger/XXX', status=302) - assert formdef.data_class().get(formdata.id).status == 'wf-st2' + formdata = formdef.data_class().get(formdata.id) + assert formdata.status == 'wf-st2' + + formdata.status = 'wf-st1' + formdata.store() + resp = app.post(formdata.get_url() + 'jump/trigger/YYY', status=403) + jump2.by = [role.id] + workflow.store() + resp = app.post(formdata.get_url() + 'jump/trigger/YYY', status=302) + formdata = formdef.data_class().get(formdata.id) + assert formdata.status == 'wf-st3' + def test_form_worklow_multiple_identical_status(pub): user = create_user(pub) diff --git a/wcs/wf/jump.py b/wcs/wf/jump.py index a737668..3b376ea 100644 --- a/wcs/wf/jump.py +++ b/wcs/wf/jump.py @@ -78,7 +78,7 @@ class TriggerDirectory(Directory): workflow_data = None if hasattr(get_request(), 'json'): workflow_data = get_request().json - url = jump_and_perform(self.formdata, self.wfstatusitem.status, + url = jump_and_perform(self.formdata, item.status, workflow_data=workflow_data) if get_request().is_json(): return json.dumps({'err': 0, 'url': url}) -- 2.8.0.rc3