From 7d4dd09912b5570fa42f8001d74630baecf8d2a5 Mon Sep 17 00:00:00 2001 From: Sylvain Delabye Date: Mon, 28 Jun 2021 13:32:17 +0200 Subject: [PATCH 1/2] Add failing tests for future date update --- demo/tests/serializers/test_validations.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/demo/tests/serializers/test_validations.py b/demo/tests/serializers/test_validations.py index 2b266ad7..40434177 100644 --- a/demo/tests/serializers/test_validations.py +++ b/demo/tests/serializers/test_validations.py @@ -3,7 +3,7 @@ from formidable.models import Formidable from formidable.serializers.validation import ( MinLengthSerializer, RegexpSerializer, - ValidationSerializer + ValidationSerializer, FutureDateSerializer ) @@ -58,6 +58,24 @@ def test_invalid_regexp_value(self): serializer = RegexpSerializer(data=data) self.assertFalse(serializer.is_valid()) + def test_valid_bool_future_date_value(self): + data = { + 'field_id': self.text_field.id, + 'type': 'IS_DATE_IN_THE_FUTURE', + 'value': True, + } + serializer = FutureDateSerializer(data=data) + self.assertTrue(serializer.is_valid()) + + def test_valid_string_future_date_value(self): + data = { + 'field_id': self.text_field.id, + 'type': 'IS_DATE_IN_THE_FUTURE', + 'value': 'true', + } + serializer = FutureDateSerializer(data=data) + self.assertTrue(serializer.is_valid()) + def test_update_validations(self): list_serializer = ValidationSerializer(many=True) self.text_field.validations.create( From a296d4efa6464c944f32f1a976e38577a574f70d Mon Sep 17 00:00:00 2001 From: Sylvain Delabye Date: Mon, 28 Jun 2021 14:56:56 +0200 Subject: [PATCH 2/2] Allow future date validations with boolean values --- CHANGELOG.rst | 1 + formidable/serializers/validation.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c13416ee..8d8559ba 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,7 @@ master (unreleased) - Add/Confirm support of Django REST Framework 3.11 (#417). - Added a thorough documentation for maintainers - Pin psycopg2-binary to 2.8 in testing env to fix CI. +- Allow to create validations `IS_DATE_IN_THE_FUTURE` by passing a boolean value instead of a string. Release 7.0.0 (2021-03-11) ========================== diff --git a/formidable/serializers/validation.py b/formidable/serializers/validation.py index acc7a267..d3add7bb 100644 --- a/formidable/serializers/validation.py +++ b/formidable/serializers/validation.py @@ -128,8 +128,14 @@ class FutureDateSerializer(ValidationSerializer): type_id = 'IS_DATE_IN_THE_FUTURE' + def to_internal_value(self, data): + if isinstance(data['value'], bool): + data['value'] = str(data['value']) + data = super().to_internal_value(data) + return data + def validate_value(self, value): - if value in ['t', "true"]: - return "true" + if value in ['t', 'true', 'True']: + return 'true' else: - return "false" + return 'false'