fields: don't cast items fields values to string (#54976)
This commit is contained in:
parent
66b15214ca
commit
65d7693f3e
|
@ -640,6 +640,7 @@ def test_formdef_submit_with_varname(pub, local_user):
|
|||
fields.MapField(id='5', label='foobar5', varname='map'),
|
||||
fields.StringField(id='6', label='foobar6', varname='foobar6'),
|
||||
fields.TableField(id='7', label='table', varname='table', rows=['Person1', 'Person2'], cols=['Name']),
|
||||
fields.ItemsField(id='8', label='items', varname='items', items=['value']),
|
||||
]
|
||||
formdef.store()
|
||||
data_class = formdef.data_class()
|
||||
|
@ -675,6 +676,7 @@ def test_formdef_submit_with_varname(pub, local_user):
|
|||
'lon': 2.25,
|
||||
},
|
||||
'table': [['Name1'], ['Name2']],
|
||||
'items': '["a"]',
|
||||
}
|
||||
}
|
||||
resp = get_app(pub).post_json(url, payload)
|
||||
|
@ -694,6 +696,7 @@ def test_formdef_submit_with_varname(pub, local_user):
|
|||
assert data_class.get(resp.json['data']['id']).data['4'].orig_filename == 'test.txt'
|
||||
assert data_class.get(resp.json['data']['id']).data['4'].get_content() == b'test'
|
||||
assert data_class.get(resp.json['data']['id']).data['5'] == '1.5;2.25'
|
||||
assert data_class.get(resp.json['data']['id']).data['8'] == []
|
||||
# test bijectivity
|
||||
assert (
|
||||
formdef.fields[3].get_json_value(data_class.get(resp.json['data']['id']).data['3'])
|
||||
|
|
|
@ -2397,6 +2397,11 @@ class ItemsField(WidgetField, ItemFieldMixin):
|
|||
field['items'] = [item['text'] for item in structured_items]
|
||||
return field
|
||||
|
||||
def from_json_value(self, value):
|
||||
if isinstance(value, list):
|
||||
return value
|
||||
return []
|
||||
|
||||
|
||||
register_field_class(ItemsField)
|
||||
|
||||
|
|
Loading…
Reference in New Issue