Projet

Général

Profil

0001-forms-fix-loss-of-value-of-map-widget-in-multipage-f.patch

Frédéric Péters, 09 septembre 2015 14:10

Télécharger (2,6 ko)

Voir les différences:

Subject: [PATCH] forms: fix loss of value of map widget in multipage forms
 (#8222)

 tests/test_form_pages.py | 26 ++++++++++++++++++++++++++
 wcs/qommon/form.py       |  5 ++++-
 2 files changed, 30 insertions(+), 1 deletion(-)
tests/test_form_pages.py
1126 1126
    data_id = formdef.data_class().select()[0].id
1127 1127
    data = formdef.data_class().get(data_id)
1128 1128
    assert data.data == {'1': None, '0': '1.234;-1.234'}
1129

  
1130
def test_form_map_multi_page(pub):
1131
    formdef = create_formdef()
1132
    formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
1133
            fields.MapField(id='1', label='map'),
1134
            fields.PageField(id='2', label='2nd page', type='page'),
1135
            fields.StringField(id='3', label='string 2')]
1136
    formdef.store()
1137
    resp = get_app(pub).get('/test/')
1138
    formdef.data_class().wipe()
1139
    resp.forms[0]['f1$latlng'] = '1.234;-1.234'
1140
    assert resp.forms[0].fields['submit'][0].value_if_submitted() == 'Next'
1141
    resp = resp.forms[0].submit('submit')
1142
    assert resp.forms[0]['previous']
1143
    resp.forms[0]['f3'] = 'bar'
1144
    resp = resp.forms[0].submit('submit')
1145
    assert resp.forms[0]['f1$latlng'].value == '1.234;-1.234'
1146
    assert 'Check values then click submit.' in resp.body
1147
    resp = resp.forms[0].submit('submit')
1148
    assert resp.status_int == 302
1149
    resp = resp.follow()
1150
    assert 'The form has been recorded' in resp.body
1151
    assert formdef.data_class().count() == 1
1152
    data_id = formdef.data_class().select()[0].id
1153
    data = formdef.data_class().get(data_id)
1154
    assert data.data == {'1': '1.234;-1.234', '3': 'bar'}
wcs/qommon/form.py
1985 1985
class MapWidget(CompositeWidget):
1986 1986
    def __init__(self, name, value=None, **kwargs):
1987 1987
        CompositeWidget.__init__(self, name, value, **kwargs)
1988
        self.add(HiddenWidget, 'latlng')
1988
        self.add(HiddenWidget, 'latlng', value=value)
1989
        widget = self.get_widget('latlng')
1990
        if value and not get_request().form.get(widget.name):
1991
            get_request().form[widget.name] = value
1989 1992
        self.readonly = kwargs.pop('readonly', False)
1990 1993
        self.kwargs = kwargs
1991 1994

  
1992
-