fields: keep display_locations empty value on import (#48969)

This commit is contained in:
Lauréline Guérin 2021-03-23 10:17:22 +01:00 committed by Thomas NOËL
parent a87fa8ade9
commit ca2d3974a3
2 changed files with 34 additions and 1 deletions

View File

@ -86,6 +86,36 @@ def test_empty_description_tag():
assert not formdef2.description
def test_empty_display_locations_tag():
formdef = FormDef()
formdef.name = 'Foo'
formdef.fields = [
fields.TitleField(type='title', label='title', display_locations=[]),
fields.SubtitleField(type='subtitle', label='subtitle', display_locations=[]),
fields.TextField(type='text', label='string', display_locations=[]),
]
formdef_xml = formdef.export_to_xml()
f1 = formdef_xml.findall('fields/field')[0]
f2 = formdef_xml.findall('fields/field')[1]
f3 = formdef_xml.findall('fields/field')[2]
assert '<display_locations />' in str(ET.tostring(f1))
assert '<display_locations />' in str(ET.tostring(f2))
assert '<display_locations />' in str(ET.tostring(f3))
formdef2 = assert_xml_import_export_works(formdef)
assert formdef2.fields[0].display_locations == []
assert formdef2.fields[1].display_locations == []
assert formdef2.fields[2].display_locations == []
formdef2_xml = formdef2.export_to_xml()
f1 = formdef2_xml.findall('fields/field')[0]
f2 = formdef2_xml.findall('fields/field')[1]
f3 = formdef2_xml.findall('fields/field')[2]
assert '<display_locations />' in str(ET.tostring(f1))
assert '<display_locations />' in str(ET.tostring(f2))
assert '<display_locations />' in str(ET.tostring(f3))
def test_boolean_attributes():
formdef = FormDef()
formdef.name = 'Foo'

View File

@ -349,7 +349,10 @@ class Field(object):
setattr(self, attribute, v)
else:
if el.text is None:
setattr(self, attribute, None)
if isinstance(getattr(self, attribute), list):
setattr(self, attribute, [])
else:
setattr(self, attribute, None)
elif el.text in ('False', 'True'): # bools
setattr(self, attribute, el.text == 'True')
elif type(getattr(self, attribute)) is int: