Skip to content

Commit 2f1fe54

Browse files
quique0194wojcikstefan
authored andcommitted
Fix empty string casted to datetime today in DateTimeField (#1533)
1 parent 24d15d4 commit 2f1fe54

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

mongoengine/fields.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,10 @@ def to_mongo(self, value):
483483
if not isinstance(value, six.string_types):
484484
return None
485485

486+
value = value.strip()
487+
if not value:
488+
return None
489+
486490
# Attempt to parse a datetime:
487491
if dateutil:
488492
try:

tests/fields/fields.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@
3535

3636
class FieldTest(MongoDBTestCase):
3737

38+
def test_datetime_from_empty_string(self):
39+
"""
40+
Ensure an exception is raised when trying to
41+
cast an empty string to datetime.
42+
"""
43+
class MyDoc(Document):
44+
dt = DateTimeField()
45+
46+
md = MyDoc(dt='')
47+
self.assertRaises(ValidationError, md.save)
48+
49+
def test_datetime_from_whitespace_string(self):
50+
"""
51+
Ensure an exception is raised when trying to
52+
cast a whitespace-only string to datetime.
53+
"""
54+
class MyDoc(Document):
55+
dt = DateTimeField()
56+
57+
md = MyDoc(dt=' ')
58+
self.assertRaises(ValidationError, md.save)
59+
3860
def test_default_values_nothing_set(self):
3961
"""Ensure that default field values are used when creating
4062
a document.

0 commit comments

Comments
 (0)