fields: don't cast items fields values to string (#54976)

This commit is contained in:
Serghei Mihai 2021-06-18 10:48:53 +02:00
parent 66b15214ca
commit 65d7693f3e
2 changed files with 8 additions and 0 deletions

View File

@ -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'])

View File

@ -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)