From b3dd32f3f7015d53cc6964c8ee984fc7490b636f Mon Sep 17 00:00:00 2001 From: graham-dds Date: Thu, 16 Jan 2020 12:03:01 -0500 Subject: [PATCH] Allow Falsey values for IsNumber validator We should use Required() instead to ensure data is present, if that's the desired behavior --- atst/forms/validators.py | 9 +++++---- tests/forms/test_validators.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/atst/forms/validators.py b/atst/forms/validators.py index ebf29a2a..50cbe3cd 100644 --- a/atst/forms/validators.py +++ b/atst/forms/validators.py @@ -36,10 +36,11 @@ def DateRange(lower_bound=None, upper_bound=None, message=None): def IsNumber(message=translate("forms.validators.is_number_message")): def _is_number(form, field): - try: - int(field.data) - except (ValueError, TypeError): - raise ValidationError(message) + if field.data: + try: + int(field.data) + except (ValueError, TypeError): + raise ValidationError(message) return _is_number diff --git a/tests/forms/test_validators.py b/tests/forms/test_validators.py index bac06f47..302f609e 100644 --- a/tests/forms/test_validators.py +++ b/tests/forms/test_validators.py @@ -11,7 +11,7 @@ class TestIsNumber: dummy_field.data = valid validator(dummy_form, dummy_field) - @pytest.mark.parametrize("invalid", ["12.1", "two", "", None]) + @pytest.mark.parametrize("invalid", ["12.1", "two"]) def test_IsNumber_rejects_anything_else(self, invalid, dummy_form, dummy_field): validator = IsNumber() dummy_field.data = invalid