From 9c9105d274bd47cb50d6f103c15bf363db73ad02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 5 Nov 2015 12:52:44 +0100 Subject: [PATCH 1/4] Revert "forms: store empty non required strings as empty strings (#8862)" This reverts commit fe7f2a1ee28d7dcdfe5700de2cdc584d227a8bd6. --- tests/test_form_pages.py | 2 +- tests/test_widgets.py | 4 ++-- wcs/forms/root.py | 2 +- wcs/qommon/form.py | 17 +++-------------- 4 files changed, 7 insertions(+), 18 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 0ca2246..9f4f66b 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -1412,7 +1412,7 @@ def test_form_map_field_back_and_submit(pub): assert formdef.data_class().count() == 1 data_id = formdef.data_class().select()[0].id data = formdef.data_class().get(data_id) - assert data.data == {'1': '', '0': '1.234;-1.234'} + assert data.data == {'1': None, '0': '1.234;-1.234'} def test_form_map_multi_page(pub): formdef = create_formdef() diff --git a/tests/test_widgets.py b/tests/test_widgets.py index f10caec..a8daf62 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -69,7 +69,7 @@ def test_stringwidget_values(): widget = StringWidget('test', value='foo') mock_form_submission(req, widget, {'test': ''}) - assert widget.parse() == '' + assert widget.parse() is None widget = StringWidget('test', value='foo') mock_form_submission(req, widget, {'test': 'bar'}) @@ -97,7 +97,7 @@ def test_table_list_rows(): form = MockHtmlForm(widget) mock_form_submission(req, widget, {'test$element0$col0': 'bar', 'test$element1$col1': 'foo'}) - assert widget.parse() == [[u'bar', '', ''], ['', u'foo', '']] + assert widget.parse() == [[u'bar', None, None], [None, u'foo', None]] def test_table_list_rows_add_row(): widget = TableListRowsWidget('test', columns=['a', 'b', 'c']) diff --git a/wcs/forms/root.py b/wcs/forms/root.py index 32c0f21..4d9f9ac 100644 --- a/wcs/forms/root.py +++ b/wcs/forms/root.py @@ -388,7 +388,7 @@ class FormPage(Directory): k = field.id v = None prefilled = False - if data.has_key(k) and data.get(k) is not None: + if data.has_key(k): v = data[k] elif field.prefill: v = field.get_prefill_value() diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py index e79605e..789aea5 100644 --- a/wcs/qommon/form.py +++ b/wcs/qommon/form.py @@ -161,17 +161,6 @@ def string_render_content(self): value=self.value, **attrs) StringWidget.render_content = string_render_content -def string_parse(self, request): - # override base class to store empty strings as strings (not None), unless - # the field if required (as None is used to check if it has been filled) - value = request.form.get(self.name) - if isinstance(value, basestring): - self.value = value - if self.required and not self.value.strip(): - self.value = None - else: - self.value = None -StringWidget._parse = string_parse def file_render_content(self): attrs = {'id': 'form_' + str(self.name).split('$')[0]} @@ -736,7 +725,7 @@ class EmailWidget(StringWidget): def _parse(self, request): StringWidget._parse(self, request) - if self.value: + if self.value is not None: # basic tests first if not '@' in self.value[1:-1]: self.error = _('must be a valid email address') @@ -843,7 +832,7 @@ class DateWidget(StringWidget): def _parse(self, request): StringWidget._parse(self, request) - if self.value: + if self.value is not None: for format_string in (self.get_format_string(), misc.date_format(), '%Y-%m-%d'): try: @@ -1056,7 +1045,7 @@ class ValidatedStringWidget(StringWidget): def _parse(self, request): StringWidget._parse(self, request) - if self.regex and self.value: + if self.regex and self.value is not None: match = re.match(self.regex, self.value) if not match or not match.group() == self.value: self.error = _('wrong format') -- 2.6.2