summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2021-07-28 03:11:13 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-07-30 09:31:29 +0200
commit6fa5d05dbaf8d7ed9ce9026202d6f8fb350fa5c4 (patch)
tree7855e4fa8a72528ebe59e8c61671c9bf347fd542
parenteebebfe0a98897d55480016b3b822df60883bed9 (diff)
Refs #32966 -- Simplified the _check_fix_default_value() implementations.
-rw-r--r--django/db/models/fields/__init__.py48
1 files changed, 24 insertions, 24 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index f974060033..676a00acfd 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1171,20 +1171,20 @@ class DateField(DateTimeCheckMixin, Field):
if not self.has_default():
return []
- now = _get_naive_now()
value = self.default
if isinstance(value, datetime.datetime):
- value = _to_naive(value)
- value = value.date()
+ value = _to_naive(value).date()
elif isinstance(value, datetime.date):
# Nothing to do, as dates don't have tz information
pass
else:
# No explicit date / datetime value -- no checks necessary
return []
+ # At this point, value is a date object.
+ today = _get_naive_now().date()
offset = datetime.timedelta(days=1)
- lower = (now - offset).date()
- upper = (now + offset).date()
+ lower = today - offset
+ upper = today + offset
if lower <= value <= upper:
return [
checks.Warning(
@@ -1308,20 +1308,20 @@ class DateTimeField(DateField):
if not self.has_default():
return []
- 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
value = _to_naive(value)
+ now = _get_naive_now()
+ offset = datetime.timedelta(seconds=10)
+ lower = now - offset
+ upper = now + offset
elif isinstance(value, datetime.date):
- second_offset = datetime.timedelta(seconds=10)
- lower = now - second_offset
- lower = datetime.datetime(lower.year, lower.month, lower.day)
- upper = now + second_offset
- upper = datetime.datetime(upper.year, upper.month, upper.day)
- value = datetime.datetime(value.year, value.month, value.day)
+ now = _get_naive_now()
+ offset = datetime.timedelta(seconds=10)
+ lower = now - offset
+ upper = now + offset
+ lower = lower.date()
+ upper = upper.date()
else:
# No explicit date / datetime value -- no checks necessary
return []
@@ -2201,22 +2201,22 @@ class TimeField(DateTimeCheckMixin, Field):
if not self.has_default():
return []
- 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
- value = _to_naive(value)
+ now = _get_naive_now()
elif isinstance(value, datetime.time):
- second_offset = datetime.timedelta(seconds=10)
- lower = now - second_offset
- upper = now + second_offset
+ now = _get_naive_now()
+ # This will not use the right date in the race condition where now
+ # is just before the date change and value is just past 0:00.
value = datetime.datetime.combine(now.date(), value)
- value = _to_naive(value)
else:
# No explicit time / datetime value -- no checks necessary
return []
+ # At this point, value is a datetime object.
+ offset = datetime.timedelta(seconds=10)
+ lower = now - offset
+ upper = now + offset
+ value = _to_naive(value)
if lower <= value <= upper:
return [
checks.Warning(