workflows: don't crash on display form action with undefined form (#49187)
This commit is contained in:
parent
7169bd0ee9
commit
11443ea25b
|
@ -4450,6 +4450,47 @@ def test_formdata_generated_document_in_private_history(pub):
|
|||
assert 'Form exported in a model' in resp.text
|
||||
|
||||
|
||||
def test_formdata_empty_form_action(pub):
|
||||
create_user(pub)
|
||||
wf = Workflow(name='status')
|
||||
st1 = wf.add_status('Status1', 'st1')
|
||||
wf.add_status('Status2', 'st2')
|
||||
|
||||
display_form = FormWorkflowStatusItem()
|
||||
display_form.id = '_x'
|
||||
display_form.by = ['_submitter']
|
||||
display_form.varname = 'xxx'
|
||||
st1.items.append(display_form)
|
||||
display_form.parent = st1
|
||||
|
||||
jump1 = ChoiceWorkflowStatusItem()
|
||||
jump1.id = '_jump1'
|
||||
jump1.label = 'Jump 1'
|
||||
jump1.by = ['_submitter']
|
||||
jump1.status = 'st2'
|
||||
jump1.parent = st1
|
||||
st1.items.append(jump1)
|
||||
|
||||
wf.store()
|
||||
|
||||
formdef = create_formdef()
|
||||
formdef.workflow_id = wf.id
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert 'Check values then click submit.' in resp.text
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert resp.status_int == 302
|
||||
resp = resp.follow()
|
||||
assert 'The form has been recorded' in resp.text
|
||||
|
||||
resp = resp.form.submit('button_jump1')
|
||||
assert formdef.data_class().select()[0].status == 'wf-st2'
|
||||
|
||||
|
||||
def test_formdata_form_file_download(pub):
|
||||
create_user(pub)
|
||||
wf = Workflow(name='status')
|
||||
|
|
|
@ -191,6 +191,8 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
FormPage.apply_field_prefills({}, form, fields)
|
||||
|
||||
def evaluate_live_form(self, form, formdata, user):
|
||||
if not self.formdef:
|
||||
return
|
||||
workflow_data = {}
|
||||
for k, v in get_dict_with_varnames(
|
||||
self.formdef.fields, self.formdef.get_data(form),
|
||||
|
|
Loading…
Reference in New Issue