Skip to content

Commit 25efe5e

Browse files
author
Sylvain Delabye
authored
Merge pull request #423 from peopledoc/date-futur-accept-bool
Future date validation accept bool values
2 parents f0dcbb3 + a296d4e commit 25efe5e

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ master (unreleased)
99
- Add/Confirm support of Django REST Framework 3.11 (#417).
1010
- Added a thorough documentation for maintainers
1111
- Pin psycopg2-binary to 2.8 in testing env to fix CI.
12+
- Allow to create validations `IS_DATE_IN_THE_FUTURE` by passing a boolean value instead of a string.
1213

1314
Release 7.0.0 (2021-03-11)
1415
==========================

demo/tests/serializers/test_validations.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from formidable.models import Formidable
44
from formidable.serializers.validation import (
55
MinLengthSerializer, RegexpSerializer,
6-
ValidationSerializer
6+
ValidationSerializer, FutureDateSerializer
77
)
88

99

@@ -58,6 +58,24 @@ def test_invalid_regexp_value(self):
5858
serializer = RegexpSerializer(data=data)
5959
self.assertFalse(serializer.is_valid())
6060

61+
def test_valid_bool_future_date_value(self):
62+
data = {
63+
'field_id': self.text_field.id,
64+
'type': 'IS_DATE_IN_THE_FUTURE',
65+
'value': True,
66+
}
67+
serializer = FutureDateSerializer(data=data)
68+
self.assertTrue(serializer.is_valid())
69+
70+
def test_valid_string_future_date_value(self):
71+
data = {
72+
'field_id': self.text_field.id,
73+
'type': 'IS_DATE_IN_THE_FUTURE',
74+
'value': 'true',
75+
}
76+
serializer = FutureDateSerializer(data=data)
77+
self.assertTrue(serializer.is_valid())
78+
6179
def test_update_validations(self):
6280
list_serializer = ValidationSerializer(many=True)
6381
self.text_field.validations.create(

formidable/serializers/validation.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,14 @@ class FutureDateSerializer(ValidationSerializer):
128128

129129
type_id = 'IS_DATE_IN_THE_FUTURE'
130130

131+
def to_internal_value(self, data):
132+
if isinstance(data['value'], bool):
133+
data['value'] = str(data['value'])
134+
data = super().to_internal_value(data)
135+
return data
136+
131137
def validate_value(self, value):
132-
if value in ['t', "true"]:
133-
return "true"
138+
if value in ['t', 'true', 'True']:
139+
return 'true'
134140
else:
135-
return "false"
141+
return 'false'

0 commit comments

Comments
 (0)