workfows: display/accept map by varname field when a target form is set (#45630)
This commit is contained in:
parent
289067de6d
commit
c917bc1455
|
@ -6061,6 +6061,23 @@ def test_create_formdata(pub):
|
|||
pq = resp.pyquery.remove_namespaces()
|
||||
assert pq('.error').text() == 'Some destination fields are duplicated'
|
||||
|
||||
# check setting map_fields_by_varname on new action
|
||||
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
|
||||
resp.forms['new-action-form']['action-formdata-action'] = 'New Form Creation'
|
||||
resp = resp.forms['new-action-form'].submit()
|
||||
resp = resp.follow()
|
||||
resp = resp.click(r'New Form Creation \(not configured\)')
|
||||
resp.form['formdef_slug'] = 'target-form' # set target form
|
||||
resp = resp.form.submit('submit')
|
||||
assert 'Please define new mappings' in resp
|
||||
assert resp.form['map_fields_by_varname'].checked is False
|
||||
resp.form['map_fields_by_varname'].checked = True
|
||||
resp = resp.form.submit('submit')
|
||||
resp = resp.follow()
|
||||
wf2 = Workflow.get(wf2.id)
|
||||
assert wf2.possible_status[-1].items[-1].map_fields_by_varname is True
|
||||
assert wf2.possible_status[-1].items[-1].mappings is None
|
||||
|
||||
|
||||
def test_block_new(pub, blocks_feature):
|
||||
create_superuser(pub)
|
||||
|
|
|
@ -258,7 +258,7 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
|||
title=_(self.mappings_label),
|
||||
to_formdef=formdef,
|
||||
value=self.mappings)
|
||||
if form.is_submitted():
|
||||
if form.is_submitted() and get_request().form.get('map_fields_by_varname') != 'yes':
|
||||
# do not validate form if formdef is changed and there is no mappings
|
||||
if formdef_slug != self.formdef_slug and not widget.parse():
|
||||
form.get_widget('%smappings' % prefix).set_error(_('Please define new mappings'))
|
||||
|
@ -267,7 +267,7 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
|||
title=_('Identifier'), value=self.varname,
|
||||
hint=_(self.varname_hint),
|
||||
advanced=not(bool(self.varname)))
|
||||
if 'map_fields_by_varname' in parameters and self.formdef:
|
||||
if 'map_fields_by_varname' in parameters and formdef:
|
||||
form.add(CheckboxWidget, '%smap_fields_by_varname' % prefix,
|
||||
title=_('Map fields by varname'),
|
||||
value=self.map_fields_by_varname,
|
||||
|
|
Loading…
Reference in New Issue