misc: don't crash restoring unset table with rows field (#32424)
This commit is contained in:
parent
447368ea95
commit
520a34c0ac
|
@ -2708,6 +2708,48 @@ def test_form_table_rows_field_submit(pub, emails):
|
|||
assert 'The form has been recorded' in resp.body
|
||||
assert 'ee' in emails.emails['New form (test)']['msg'].get_payload()[1].get_payload()
|
||||
|
||||
def test_form_new_table_rows_field_draft_recall(pub):
|
||||
formdef = create_formdef()
|
||||
formdef.enable_tracking_codes = True
|
||||
formdef.fields = [
|
||||
fields.PageField(id='0', label='1st page', type='page'),
|
||||
fields.StringField(id='1', label='string'),
|
||||
fields.PageField(id='2', label='2nd page', type='page'),
|
||||
]
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
formdef.store()
|
||||
|
||||
app = get_app(pub)
|
||||
resp = app.get('/test/')
|
||||
resp.form['f1'] = 'test'
|
||||
resp = resp.form.submit('submit')
|
||||
resp = resp.form.submit('submit')
|
||||
assert 'Check values then click submit.' in resp.body
|
||||
tracking_code = get_displayed_tracking_code(resp)
|
||||
assert tracking_code is not None
|
||||
|
||||
# add new table rows field to formdef
|
||||
formdef.fields.append(
|
||||
fields.TableRowsField(id='3', label='table', type='tablerows',
|
||||
columns=['a', 'b'], required=False)
|
||||
)
|
||||
formdef.store()
|
||||
|
||||
# restore form on validation page
|
||||
resp = get_app(pub).get('/')
|
||||
resp.form['code'] = tracking_code
|
||||
resp = resp.form.submit().follow().follow().follow()
|
||||
|
||||
# validate form
|
||||
resp = resp.forms[1].submit()
|
||||
resp = resp.follow()
|
||||
assert 'The form has been recorded' in resp.body
|
||||
assert formdef.data_class().count() == 1
|
||||
assert formdef.data_class().select()[0].data['1'] == 'test'
|
||||
assert formdef.data_class().select()[0].data['3'] is None
|
||||
|
||||
def test_formdata_attachment_download(pub):
|
||||
create_user(pub)
|
||||
wf = Workflow(name='status')
|
||||
|
|
|
@ -620,7 +620,7 @@ class FormDef(StorableObject):
|
|||
continue
|
||||
|
||||
current_page_fields.append(field)
|
||||
value = dict.get(field.id, '')
|
||||
value = dict.get(field.id)
|
||||
field.add_to_view_form(form, value)
|
||||
|
||||
if on_page:
|
||||
|
|
Loading…
Reference in New Issue