workfows: display/accept map by varname field when a target form is set (#45630)

This commit is contained in:
Frédéric Péters 2020-07-31 08:20:26 +02:00
parent 289067de6d
commit c917bc1455
2 changed files with 19 additions and 2 deletions

View File

@ -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)

View File

@ -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,