general: store computed data fields after backoffice submission (#54928)
This commit is contained in:
parent
1725e65cda
commit
032b9c8da3
|
@ -1661,3 +1661,27 @@ def test_backoffice_submission_sidebar_lateral_block(pub):
|
|||
lateral_block_url = re.findall('data-async-url="(.*/lateral-block)"', resp.text)[0]
|
||||
partial_resp = app.get(lateral_block_url)
|
||||
assert partial_resp.text == '<div class="lateral-block">foo bar blah</div>'
|
||||
|
||||
|
||||
def test_backoffice_submission_computed_field(pub):
|
||||
user = create_user(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.ComputedField(id='1', label='computed', varname='computed', value_template='{{ "xxx" }}'),
|
||||
]
|
||||
formdef.backoffice_submission_roles = user.roles[:]
|
||||
formdef.workflow_roles = {'_receiver': user.roles[0]}
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/submission/form-title/')
|
||||
resp = resp.forms[0].submit('submit') # -> validation
|
||||
resp = resp.forms[0].submit('submit').follow() # -> submit
|
||||
assert 'The form has been recorded' in resp.text
|
||||
assert formdef.data_class().count() == 1
|
||||
formdata = formdef.data_class().select()[0]
|
||||
assert formdata.data == {'1': 'xxx'}
|
||||
|
|
|
@ -328,6 +328,9 @@ class FormFillPage(PublicFormFillPage):
|
|||
return redirect(get_publisher().get_backoffice_url() + '/submission/')
|
||||
filled.just_created()
|
||||
filled.data = self.formdef.get_data(form)
|
||||
magictoken = get_request().form['magictoken']
|
||||
computed_values = get_session().get_by_magictoken('%s-computed' % magictoken, {})
|
||||
filled.data.update(computed_values)
|
||||
filled.backoffice_submission = True
|
||||
if not filled.submission_context:
|
||||
filled.submission_context = {}
|
||||
|
|
Loading…
Reference in New Issue