summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2021-07-28 02:50:49 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-07-30 09:31:24 +0200
commiteebebfe0a98897d55480016b3b822df60883bed9 (patch)
tree6892d2ce6a3696faa5a24aaf89084a196f505bcb
parent542e74947535b10684e9e396a0d54979e9f70fbf (diff)
Refs #32966 -- Added _to_naive() and _get_naive_now() for use in DateTimeCheckMixin classes.
-rw-r--r--django/db/models/fields/__init__.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index d61c446d5a..f974060033 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1103,6 +1103,16 @@ class CommaSeparatedIntegerField(CharField):
}
+def _to_naive(value):
+ if timezone.is_aware(value):
+ value = timezone.make_naive(value, timezone.utc)
+ return value
+
+
+def _get_naive_now():
+ return _to_naive(timezone.now())
+
+
class DateTimeCheckMixin:
def check(self, **kwargs):
@@ -1161,13 +1171,10 @@ class DateField(DateTimeCheckMixin, Field):
if not self.has_default():
return []
- now = timezone.now()
- if not timezone.is_naive(now):
- now = timezone.make_naive(now, timezone.utc)
+ now = _get_naive_now()
value = self.default
if isinstance(value, datetime.datetime):
- if not timezone.is_naive(value):
- value = timezone.make_naive(value, timezone.utc)
+ value = _to_naive(value)
value = value.date()
elif isinstance(value, datetime.date):
# Nothing to do, as dates don't have tz information
@@ -1301,16 +1308,13 @@ class DateTimeField(DateField):
if not self.has_default():
return []
- now = timezone.now()
- if not timezone.is_naive(now):
- now = timezone.make_naive(now, timezone.utc)
+ now = _get_naive_now()
value = self.default
if isinstance(value, datetime.datetime):
second_offset = datetime.timedelta(seconds=10)
lower = now - second_offset
upper = now + second_offset
- if timezone.is_aware(value):
- value = timezone.make_naive(value, timezone.utc)
+ value = _to_naive(value)
elif isinstance(value, datetime.date):
second_offset = datetime.timedelta(seconds=10)
lower = now - second_offset
@@ -2197,23 +2201,19 @@ class TimeField(DateTimeCheckMixin, Field):
if not self.has_default():
return []
- now = timezone.now()
- if not timezone.is_naive(now):
- now = timezone.make_naive(now, timezone.utc)
+ now = _get_naive_now()
value = self.default
if isinstance(value, datetime.datetime):
second_offset = datetime.timedelta(seconds=10)
lower = now - second_offset
upper = now + second_offset
- if timezone.is_aware(value):
- value = timezone.make_naive(value, timezone.utc)
+ value = _to_naive(value)
elif isinstance(value, datetime.time):
second_offset = datetime.timedelta(seconds=10)
lower = now - second_offset
upper = now + second_offset
value = datetime.datetime.combine(now.date(), value)
- if timezone.is_aware(value):
- value = timezone.make_naive(value, timezone.utc)
+ value = _to_naive(value)
else:
# No explicit time / datetime value -- no checks necessary
return []