forms: correctly restore date fields from drafts (#23389)

This commit is contained in:
Frédéric Péters 2018-04-24 18:18:41 +02:00
parent 9057a659b9
commit 6628b56429
2 changed files with 29 additions and 0 deletions

View File

@ -1380,6 +1380,30 @@ def test_form_draft_with_file_direct_validation(pub):
assert 'download="test2.txt"' in resp.body
assert resp.click('test2.txt').follow().body == 'foobar2'
def test_form_draft_with_date(pub):
user = create_user(pub)
formdef = create_formdef()
formdef.fields = [fields.DateField(id='0', label='date', type='date')]
formdef.enable_tracking_codes = True
formdef.store()
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
formdef.data_class().wipe()
tracking_code = get_displayed_tracking_code(resp)
resp.forms[0]['f0'] = '2012-02-12'
resp = resp.forms[0].submit('submit')
resp = login(get_app(pub), username='foo', password='foo').get('/')
resp.forms[0]['code'] = tracking_code
resp = resp.forms[0].submit().follow().follow().follow()
assert '2012-02-12' in resp.body
# check submitted form keeps the date
resp = resp.forms[1].submit('submit') # -> done
resp = resp.follow()
assert '2012-02-12' in resp.body
def test_form_direct_draft_access(pub):
user = create_user(pub)
formdef = create_formdef()

View File

@ -632,6 +632,11 @@ class FormPage(Directory):
req = get_request()
for k, v in data.items():
req.form['f%s' % k] = v
for field in self.formdef.fields:
if not field.id in data:
continue
if field.convert_value_to_str:
req.form['f%s' % field.id] = field.convert_value_to_str(data[field.id])
return self.validating(data)
else:
page_no = self.formdef.get_start_page()