fields: use xml_node_text() for safe access to prefill nodes (#40320)
This commit is contained in:
parent
d2a25dc335
commit
1f3af36747
|
@ -622,3 +622,14 @@ def test_field_prefill():
|
|||
f2 = FormDef.import_from_xml_tree(formdef_xml)
|
||||
assert len(f2.fields) == len(formdef.fields)
|
||||
assert f2.fields[0].prefill == {'type': 'string', 'value': 'plop'}
|
||||
|
||||
formdef.fields = [
|
||||
fields.StringField(type='string', id=1, label='Bar', size='40',
|
||||
prefill={'type': 'string', 'value': 'plop', 'locked': False})
|
||||
]
|
||||
formdef_xml_str = ET.tostring(formdef.export_to_xml())
|
||||
formdef_xml_str = formdef_xml_str.replace(b'<value>plop</value>', b'')
|
||||
formdef_xml = ET.fromstring(formdef_xml_str)
|
||||
f2 = FormDef.import_from_xml_tree(formdef_xml)
|
||||
assert len(f2.fields) == len(formdef.fields)
|
||||
assert f2.fields[0].prefill == {'type': 'string', 'value': None}
|
||||
|
|
|
@ -326,10 +326,10 @@ class Field(object):
|
|||
self.prefill = {}
|
||||
if node is not None and node.findall('type'):
|
||||
self.prefill = {
|
||||
'type': force_str(node.find('type').text),
|
||||
'type': xml_node_text(node.find('type')),
|
||||
}
|
||||
if self.prefill['type'] and self.prefill['type'] != 'none':
|
||||
self.prefill['value'] = force_str(node.find('value').text)
|
||||
self.prefill['value'] = xml_node_text(node.find('value'))
|
||||
if xml_node_text(node.find('locked')) == 'True':
|
||||
self.prefill['locked'] = True
|
||||
|
||||
|
|
Loading…
Reference in New Issue