From 9ad71a98056ce54aabd251cc7a0a6f9797590124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 20 Aug 2019 16:27:49 +0200 Subject: [PATCH] fields: fix import field validation attribute from xml (#35488) --- tests/test_formdef_import.py | 26 ++++++++++++++++++++++++++ wcs/fields.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/test_formdef_import.py b/tests/test_formdef_import.py index bc3c3a807..bf6198ba2 100644 --- a/tests/test_formdef_import.py +++ b/tests/test_formdef_import.py @@ -509,6 +509,32 @@ def test_field_condition(): assert len(f2.fields) == len(formdef.fields) assert f2.fields[0].condition == {'type': 'django', 'value': '1'} +def test_field_validation(): + formdef = FormDef() + formdef.name = 'Foo' + formdef.fields = [ + fields.StringField(type='string', id=1, label='Bar', size='40', validation={}) + ] + f2 = assert_xml_import_export_works(formdef) + assert len(f2.fields) == len(formdef.fields) + assert not f2.fields[0].validation + + formdef.fields = [ + fields.StringField(type='string', id=1, label='Bar', size='40', validation=None) + ] + formdef_xml = formdef.export_to_xml() + f2 = FormDef.import_from_xml_tree(formdef_xml) + assert len(f2.fields) == len(formdef.fields) + assert not f2.fields[0].validation + + formdef.fields = [ + fields.StringField(type='string', id=1, label='Bar', size='40', + validation={'type': 'regex', 'value': r'\d'}) + ] + f2 = assert_xml_import_export_works(formdef) + assert len(f2.fields) == len(formdef.fields) + assert f2.fields[0].validation == formdef.fields[0].validation + def test_digest_template(): formdef = FormDef() formdef.name = 'Foo' diff --git a/wcs/fields.py b/wcs/fields.py index 5048975cd..543cf4431 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -672,7 +672,7 @@ class StringField(WidgetField): widget_class = WcsExtraStringWidget size = None extra_attributes = ['size'] - validation = None + validation = {} data_source = {} def perform_more_widget_changes(self, form, kwargs, edit=True):