fields: fix support for optional fields using data sources with id/q (#35514)

This commit is contained in:
Frédéric Péters 2019-08-21 14:34:27 +02:00
parent 0a55d2dfc0
commit b6ce40c521
2 changed files with 23 additions and 1 deletions

View File

@ -5181,6 +5181,26 @@ remote.example.net = 1234
assert formdef.data_class().select()[0].data['0_display'] == 'hello'
assert formdef.data_class().select()[0].data['0_structured'] == data['data'][0]
# check with optional field
formdef.fields[0].required = False
formdef.store()
app = get_app(pub)
with mock.patch('qommon.misc.urlopen') as urlopen:
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'},
{'id': '2', 'text': 'world', 'extra': 'bar'}]}
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data))
resp = app.get('/test/')
pq = resp.pyquery.remove_namespaces()
select2_url = pq('select').attr['data-select2-url']
resp = resp.form.submit('submit') # -> validation page
assert resp.form['f0'].value == ''
assert resp.form['f0_label'].value == ''
resp = resp.form.submit('submit') # -> submit
assert formdef.data_class().select()[0].data['0'] is None
def test_item_field_autocomplete_jsonp_source(http_requests, pub):
user = create_user(pub)
formdef = create_formdef()

View File

@ -1311,7 +1311,9 @@ class ItemField(WidgetField):
def add_to_view_form(self, form, value = None):
real_value = value
label_value = self.get_display_value(value)
label_value = ''
if value is not None:
label_value = self.get_display_value(value)
self.field_key = 'f%s' % self.id
get_request().form[self.field_key + '_label'] = label_value # :/