forms: don't mark missing fields for live conditions (#34502)
This commit is contained in:
parent
3343f32bf0
commit
fae19b4a9c
|
@ -6625,3 +6625,43 @@ def test_frontoffice_workflow_form_with_dynamic_comment(pub):
|
|||
live_resp = app.post(live_url, params=resp.form.submit_fields())
|
||||
assert live_resp.json['result']['2']['visible']
|
||||
assert live_resp.json['result']['2']['content'] == '<p>value is test</p>'
|
||||
|
||||
def test_frontoffice_workflow_form_with_impossible_condition(pub):
|
||||
user = create_user(pub)
|
||||
wf = Workflow.get_default_workflow()
|
||||
wf.id = '2'
|
||||
wf.store()
|
||||
wf = Workflow.get(wf.id)
|
||||
status = wf.get_status('new')
|
||||
status.items = []
|
||||
display_form = FormWorkflowStatusItem()
|
||||
display_form.id = '_display_form'
|
||||
display_form.by = ['_submitter']
|
||||
display_form.varname = 'blah'
|
||||
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
||||
display_form.formdef.fields = [
|
||||
fields.StringField(id='1', label='Test', varname='str', type='string',
|
||||
condition={'type': 'django', 'value': '0 == 1'}),
|
||||
fields.StringField(id='2', label='Test2', type='string',
|
||||
condition={'type': 'django', 'value': 'blah_var_str == "toto"'}),
|
||||
]
|
||||
status.items.append(display_form)
|
||||
display_form.parent = status
|
||||
|
||||
wf.store()
|
||||
formdef = create_formdef()
|
||||
formdef.workflow_id = wf.id
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.user_id = user.id
|
||||
formdata.status = 'wf-new'
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get(formdata.get_url(backoffice=False))
|
||||
assert 'f1' not in resp.form.fields
|
||||
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none'
|
||||
|
|
|
@ -658,7 +658,9 @@ class FormDef(StorableObject):
|
|||
|
||||
for field in fields:
|
||||
if field.varname in live_condition_fields:
|
||||
form.get_widget('f%s' % field.id).live_condition_source = True
|
||||
widget = form.get_widget('f%s' % field.id)
|
||||
if widget:
|
||||
widget.live_condition_source = True
|
||||
|
||||
def get_field_data(self, field, widget):
|
||||
d = {}
|
||||
|
|
Loading…
Reference in New Issue