workflow: fix auto jump to unknown status (#43242)
This commit is contained in:
parent
7fe3a4b473
commit
a5dde9f9c9
|
@ -5266,7 +5266,7 @@ def test_workflow_jump_previous_on_submit(pub):
|
|||
|
||||
|
||||
def test_workflow_jump_previous_auto(pub):
|
||||
user = create_user(pub)
|
||||
create_user(pub)
|
||||
create_environment(pub)
|
||||
|
||||
wf = Workflow(name='blah')
|
||||
|
@ -5318,6 +5318,25 @@ def test_workflow_jump_previous_auto(pub):
|
|||
assert formdata.status == 'wf-south'
|
||||
assert formdata.workflow_data['_markers_stack'] == [{'status_id': 'north'}]
|
||||
|
||||
# no marker (workflow inconsistency)
|
||||
formdata.workflow_data['_markers_stack'] = []
|
||||
formdata.store()
|
||||
resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
|
||||
resp = resp.form.submit('button_back')
|
||||
resp = resp.follow()
|
||||
formdata = formdef.data_class().get(formdata.id)
|
||||
assert formdata.status == 'wf-south'
|
||||
assert not formdata.workflow_data['_markers_stack']
|
||||
|
||||
# unknown marker (workflow inconsistency)
|
||||
formdata.workflow_data['_markers_stack'] = [{'status_id': 'unknown_status'}]
|
||||
formdata.store()
|
||||
resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
|
||||
resp = resp.form.submit('button_back')
|
||||
resp = resp.follow()
|
||||
formdata = formdef.data_class().get(formdata.id)
|
||||
assert formdata.status == 'wf-south'
|
||||
|
||||
|
||||
def test_backoffice_fields(pub):
|
||||
user = create_user(pub)
|
||||
|
|
|
@ -578,14 +578,17 @@ class FormData(StorableObject):
|
|||
wf_status.evaluate_live_form(form, self, user)
|
||||
|
||||
def pop_previous_marked_status(self):
|
||||
if not self.workflow_data or not '_markers_stack' in self.workflow_data:
|
||||
if not self.workflow_data or '_markers_stack' not in self.workflow_data:
|
||||
return None
|
||||
try:
|
||||
marker_data = self.workflow_data['_markers_stack'].pop()
|
||||
status_id = marker_data['status_id']
|
||||
except IndexError:
|
||||
return None
|
||||
return self.formdef.workflow.get_status(status_id)
|
||||
try:
|
||||
return self.formdef.workflow.get_status(status_id)
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
def jump_status(self, status_id):
|
||||
if status_id == '_previous':
|
||||
|
|
Loading…
Reference in New Issue