forms: fix loss of value of map widget in multipage forms (#8222)
This commit is contained in:
parent
f1645fc610
commit
cbf4737b2c
|
@ -1126,3 +1126,29 @@ def test_form_map_field_back_and_submit(pub):
|
|||
data_id = formdef.data_class().select()[0].id
|
||||
data = formdef.data_class().get(data_id)
|
||||
assert data.data == {'1': None, '0': '1.234;-1.234'}
|
||||
|
||||
def test_form_map_multi_page(pub):
|
||||
formdef = create_formdef()
|
||||
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
|
||||
fields.MapField(id='1', label='map'),
|
||||
fields.PageField(id='2', label='2nd page', type='page'),
|
||||
fields.StringField(id='3', label='string 2')]
|
||||
formdef.store()
|
||||
resp = get_app(pub).get('/test/')
|
||||
formdef.data_class().wipe()
|
||||
resp.forms[0]['f1$latlng'] = '1.234;-1.234'
|
||||
assert resp.forms[0].fields['submit'][0].value_if_submitted() == 'Next'
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert resp.forms[0]['previous']
|
||||
resp.forms[0]['f3'] = 'bar'
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert resp.forms[0]['f1$latlng'].value == '1.234;-1.234'
|
||||
assert 'Check values then click submit.' in resp.body
|
||||
resp = resp.forms[0].submit('submit')
|
||||
assert resp.status_int == 302
|
||||
resp = resp.follow()
|
||||
assert 'The form has been recorded' in resp.body
|
||||
assert formdef.data_class().count() == 1
|
||||
data_id = formdef.data_class().select()[0].id
|
||||
data = formdef.data_class().get(data_id)
|
||||
assert data.data == {'1': '1.234;-1.234', '3': 'bar'}
|
||||
|
|
|
@ -1985,7 +1985,10 @@ $(function() {
|
|||
class MapWidget(CompositeWidget):
|
||||
def __init__(self, name, value=None, **kwargs):
|
||||
CompositeWidget.__init__(self, name, value, **kwargs)
|
||||
self.add(HiddenWidget, 'latlng')
|
||||
self.add(HiddenWidget, 'latlng', value=value)
|
||||
widget = self.get_widget('latlng')
|
||||
if value and not get_request().form.get(widget.name):
|
||||
get_request().form[widget.name] = value
|
||||
self.readonly = kwargs.pop('readonly', False)
|
||||
self.kwargs = kwargs
|
||||
|
||||
|
|
Loading…
Reference in New Issue