workflows: fix prefilling of boolean fields (#47253)
This commit is contained in:
parent
00ac61dc6d
commit
4e3e20079a
|
@ -4415,6 +4415,46 @@ def test_formdata_workflow_form_prefill_conditional_field(pub):
|
|||
assert resp.forms[0]['f2'].value == 'foo@localhost'
|
||||
|
||||
|
||||
def test_formdata_workflow_form_prefill_checkbox(pub):
|
||||
create_user(pub)
|
||||
wf = Workflow(name='status')
|
||||
st1 = wf.add_status('Status1', 'st1')
|
||||
|
||||
display_form = FormWorkflowStatusItem()
|
||||
display_form.id = '_x'
|
||||
display_form.by = ['_submitter']
|
||||
display_form.varname = 'xxx'
|
||||
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
||||
display_form.formdef.fields.append(fields.BoolField(id='1', label='blah',
|
||||
type='bool', varname='yyy', prefill={'type': 'formula', 'value': 'True'}))
|
||||
display_form.formdef.fields.append(fields.BoolField(id='2', label='blah2',
|
||||
type='bool', varname='zzz', prefill={'type': 'formula', 'value': 'True'}))
|
||||
st1.items.append(display_form)
|
||||
display_form.parent = st1
|
||||
|
||||
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.form.submit('submit')
|
||||
assert 'Check values then click submit.' in resp
|
||||
resp = resp.form.submit('submit').follow()
|
||||
assert 'The form has been recorded' in resp
|
||||
assert resp.form['f1'].checked is True
|
||||
assert resp.form['f2'].checked is True
|
||||
resp.form['f1'].checked = False
|
||||
resp = resp.form.submit('submit')
|
||||
|
||||
formdata = formdef.data_class().select()[0]
|
||||
assert formdata.workflow_data['xxx_var_yyy_raw'] is False
|
||||
assert formdata.workflow_data['xxx_var_zzz_raw'] is True
|
||||
|
||||
|
||||
def test_form_map_field_back_and_submit(pub):
|
||||
formdef = create_formdef()
|
||||
formdef.fields = [
|
||||
|
|
|
@ -180,6 +180,10 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
req = get_request()
|
||||
self.formdef.set_live_condition_sources(form, self.formdef.fields)
|
||||
|
||||
if form.is_submitted():
|
||||
# skip prefilling part when form is being submitted
|
||||
return
|
||||
|
||||
fields = self.formdef.fields
|
||||
if displayed_fields is not None:
|
||||
fields = displayed_fields
|
||||
|
|
Loading…
Reference in New Issue