From c53513d4b4a32a1298d1e8330aad6a1a79dc2ec0 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Thu, 17 May 2018 14:07:59 +0200 Subject: [PATCH] do not jump after edit if target status is unknown (#23882) --- tests/test_form_pages.py | 17 +++++++++++++++++ wcs/forms/root.py | 8 +++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 75677463..0955a09c 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -1611,6 +1611,23 @@ def test_form_multi_page_post_edit(pub): assert 'barXYZ' in resp.body # unchanged value is still there assert formdef.data_class().get(data_id).status == 'wf-%s' % st2.id + # jump to a unexistant status == do not jump + editable.status = 'deleted_status_id' + workflow.store() + # go back to st1 + formdata = formdef.data_class().get(data_id) + formdata.status = 'wf-%s' % st1.id + formdata.store() + assert formdef.data_class().get(data_id).status == 'wf-%s' % st1.id + page = login(get_app(pub), username='foo', password='foo').get('/test/%s/' % data_id) + resp = page.forms[0].submit('button_editable') + resp = resp.follow() + resp.forms[0]['f1'] = 'foo3' + resp = resp.forms[0].submit('submit') + resp = resp.forms[0].submit('submit') + resp = resp.follow() + assert formdef.data_class().get(data_id).status == 'wf-%s' % st1.id # stay on st1 + def test_form_count_dispatching(pub): user = create_user(pub) diff --git a/wcs/forms/root.py b/wcs/forms/root.py index 97a3d2a9..752d612d 100644 --- a/wcs/forms/root.py +++ b/wcs/forms/root.py @@ -1067,9 +1067,11 @@ class FormPage(Directory): url = None for item in wf_status.items: if item.id == self.edit_action_id and item.status: - self.edited_data.jump_status(item.status) - url = self.edited_data.perform_workflow() - break + wf_status = item.get_target_status(self.edited_data) + if wf_status: + self.edited_data.jump_status(wf_status[0].id) + url = self.edited_data.perform_workflow() + break return redirect(url or '.') def tempfile(self): -- 2.17.0