From 06e3c1cb6be17c21956082f48edea8c735c365c2 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 28 Jun 2016 14:51:08 +0200 Subject: [PATCH] add current formdata variables on autosave (#12347) --- tests/test_form_pages.py | 29 +++++++++++++++++++++++++++++ wcs/forms/root.py | 2 ++ 2 files changed, 31 insertions(+) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 7b3dcef..4e6f134 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -2520,6 +2520,35 @@ def test_form_autosave(pub): assert json.loads(ajax_resp.body)['result'] == 'error' assert formdef.data_class().select()[0].data['1'] == 'foobar3' +def test_form_autosave_with_datasource(pub): + formdef = create_formdef() + formdef.fields = [fields.PageField(id='0', label='1st page', type='page'), + fields.StringField(id='1', label='string', varname='foo'), + fields.PageField(id='2', label='2nd page', type='page'), + fields.ItemField(id='3', label='item', type='item', + data_source = {'type': 'formula', 'value': '''[('1', form_var_foo*2)]'''})] + formdef.enable_tracking_codes = True + formdef.store() + + formdef.data_class().wipe() + app = get_app(pub) + resp = app.get('/test/') + resp.form['f1'] = 'bar' + + app.post('/test/autosave', params=resp.form.submit_fields()) + assert formdef.data_class().count() == 1 + formdata = formdef.data_class().select()[0] + assert formdata.status == 'draft' + assert formdef.data_class().select()[0].data['1'] == 'bar' + assert formdef.data_class().select()[0].data.get('3') == None + + resp = resp.forms[0].submit('submit') + app.post('/test/autosave', params=resp.form.submit_fields()) + assert formdef.data_class().count() == 1 + assert formdef.data_class().select()[0].data['1'] == 'bar' + assert formdef.data_class().select()[0].data['3'] == '1' + assert formdef.data_class().select()[0].data['3_display'] == 'barbar' + def test_file_field_validation(pub, fargo_url): document_type = { 'id': 'justificatif-de-domicile', diff --git a/wcs/forms/root.py b/wcs/forms/root.py index e2c0ad9..67baf98 100644 --- a/wcs/forms/root.py +++ b/wcs/forms/root.py @@ -863,6 +863,8 @@ class FormPage(Directory): if not session: return result_error('missing session') + self.feed_current_data(magictoken) + form_data = session.get_by_magictoken(magictoken, {}) if not form_data: return result_error('missing data') -- 2.8.1