workflows: redirect to correct status in case of multiple triggers (#10388)

This commit is contained in:
Frédéric Péters 2016-03-23 10:00:40 +01:00
parent 18fe075663
commit 654b3df9c6
2 changed files with 21 additions and 2 deletions

View File

@ -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)

View File

@ -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})