workflows: reevaluate form according to possible new content (#34564)
This commit is contained in:
parent
d157723e20
commit
3343f32bf0
|
@ -6581,3 +6581,47 @@ def test_frontoffice_workflow_form_with_conditions(pub):
|
|||
resp = resp.form.submit('submit').follow()
|
||||
|
||||
assert formdef.data_class().get(formdata.id).workflow_data == {'blah_var_str': 'xxx2', 'blah_var_str2': None}
|
||||
|
||||
def test_frontoffice_workflow_form_with_dynamic_comment(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', required=True),
|
||||
fields.CommentField(id='2', label='value is {{blah_var_str}}', type='comment'),
|
||||
]
|
||||
status.items.append(display_form)
|
||||
display_form.parent = status
|
||||
|
||||
wf.store()
|
||||
formdef = create_formdef()
|
||||
formdef.workflow_id = wf.id
|
||||
formdef.fields = [fields.StringField(id='0', label='string', varname='plop')]
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.user_id = user.id
|
||||
formdata.status = 'wf-new'
|
||||
formdata.data = {'0': 'plop'}
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get(formdata.get_url(backoffice=False))
|
||||
assert 'f1' in resp.form.fields
|
||||
|
||||
live_url = resp.html.find('form').attrs['data-live-url']
|
||||
resp.form['f1'] = 'test'
|
||||
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>'
|
||||
|
|
|
@ -668,7 +668,10 @@ class FormStatusPage(Directory, FormTemplateMixin):
|
|||
user = get_request().user
|
||||
form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
|
||||
self.filled.evaluate_live_workflow_form(user, form)
|
||||
get_publisher().substitutions.unfeed(lambda x: x is self.filled)
|
||||
get_publisher().substitutions.feed(self.filled)
|
||||
# reevaluate workflow form according to possible new content
|
||||
form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
|
||||
return self.live_process_fields(form, self.filled, displayed_fields)
|
||||
|
||||
def _q_lookup(self, component):
|
||||
|
|
Loading…
Reference in New Issue