fields: fix support for optional fields using data sources with id/q (#35514)
This commit is contained in:
parent
0a55d2dfc0
commit
b6ce40c521
|
@ -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()
|
||||
|
|
|
@ -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 # :/
|
||||
|
|
Loading…
Reference in New Issue