diff options
| author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2021-07-28 02:50:49 -0400 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-07-30 09:31:24 +0200 |
| commit | eebebfe0a98897d55480016b3b822df60883bed9 (patch) | |
| tree | 6892d2ce6a3696faa5a24aaf89084a196f505bcb | |
| parent | 542e74947535b10684e9e396a0d54979e9f70fbf (diff) | |
Refs #32966 -- Added _to_naive() and _get_naive_now() for use in DateTimeCheckMixin classes.
| -rw-r--r-- | django/db/models/fields/__init__.py | 34 |
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 [] |
