mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc.
datetime.UTC was added in Python 3.11.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import datetime
|
||||
import zoneinfo
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import timezone as datetime_timezone
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import DataError, OperationalError
|
||||
@@ -63,22 +62,22 @@ def truncate_to(value, kind, tzinfo=None):
|
||||
if kind == "hour":
|
||||
return value.replace(minute=0, second=0, microsecond=0)
|
||||
if kind == "day":
|
||||
if isinstance(value, datetime):
|
||||
if isinstance(value, datetime.datetime):
|
||||
return value.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
return value
|
||||
if kind == "week":
|
||||
if isinstance(value, datetime):
|
||||
return (value - timedelta(days=value.weekday())).replace(
|
||||
if isinstance(value, datetime.datetime):
|
||||
return (value - datetime.timedelta(days=value.weekday())).replace(
|
||||
hour=0, minute=0, second=0, microsecond=0
|
||||
)
|
||||
return value - timedelta(days=value.weekday())
|
||||
return value - datetime.timedelta(days=value.weekday())
|
||||
if kind == "month":
|
||||
if isinstance(value, datetime):
|
||||
if isinstance(value, datetime.datetime):
|
||||
return value.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
return value.replace(day=1)
|
||||
if kind == "quarter":
|
||||
month_in_quarter = value.month - (value.month - 1) % 3
|
||||
if isinstance(value, datetime):
|
||||
if isinstance(value, datetime.datetime):
|
||||
return value.replace(
|
||||
month=month_in_quarter,
|
||||
day=1,
|
||||
@@ -89,7 +88,7 @@ def truncate_to(value, kind, tzinfo=None):
|
||||
)
|
||||
return value.replace(month=month_in_quarter, day=1)
|
||||
# otherwise, truncate to year
|
||||
if isinstance(value, datetime):
|
||||
if isinstance(value, datetime.datetime):
|
||||
return value.replace(
|
||||
month=1, day=1, hour=0, minute=0, second=0, microsecond=0
|
||||
)
|
||||
@@ -125,8 +124,8 @@ class DateFunctionTests(TestCase):
|
||||
Extract year uses a BETWEEN filter to compare the year to allow indexes
|
||||
to be used.
|
||||
"""
|
||||
start_datetime = datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -164,8 +163,8 @@ class DateFunctionTests(TestCase):
|
||||
self.assertEqual(query_string.count("extract"), 3)
|
||||
|
||||
def test_extract_year_greaterthan_lookup(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -189,8 +188,8 @@ class DateFunctionTests(TestCase):
|
||||
self.assertGreaterEqual(str(qs.query).lower().count("extract"), 2)
|
||||
|
||||
def test_extract_year_lessthan_lookup(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 10)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -214,8 +213,8 @@ class DateFunctionTests(TestCase):
|
||||
self.assertGreaterEqual(str(qs.query).lower().count("extract"), 2)
|
||||
|
||||
def test_extract_lookup_name_sql_injection(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -230,8 +229,8 @@ class DateFunctionTests(TestCase):
|
||||
).exists()
|
||||
|
||||
def test_extract_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -387,8 +386,8 @@ class DateFunctionTests(TestCase):
|
||||
|
||||
@skipUnlessDBFeature("has_native_duration_field")
|
||||
def test_extract_duration(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -435,8 +434,8 @@ class DateFunctionTests(TestCase):
|
||||
DTModel.objects.annotate(extracted=Extract("duration", lookup))
|
||||
|
||||
def test_extract_year_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -464,8 +463,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_iso_year_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -494,12 +493,12 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_iso_year_func_boundaries(self):
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
week_52_day_2014 = datetime(2014, 12, 27, 13, 0) # Sunday
|
||||
week_1_day_2014_2015 = datetime(2014, 12, 31, 13, 0) # Wednesday
|
||||
week_53_day_2015 = datetime(2015, 12, 31, 13, 0) # Thursday
|
||||
week_52_day_2014 = datetime.datetime(2014, 12, 27, 13, 0) # Sunday
|
||||
week_1_day_2014_2015 = datetime.datetime(2014, 12, 31, 13, 0) # Wednesday
|
||||
week_53_day_2015 = datetime.datetime(2015, 12, 31, 13, 0) # Thursday
|
||||
if settings.USE_TZ:
|
||||
week_1_day_2014_2015 = timezone.make_aware(week_1_day_2014_2015)
|
||||
week_52_day_2014 = timezone.make_aware(week_52_day_2014)
|
||||
@@ -539,8 +538,8 @@ class DateFunctionTests(TestCase):
|
||||
self.assertSequenceEqual(qs, [obj_1_iso_2014])
|
||||
|
||||
def test_extract_month_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -574,8 +573,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_day_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -603,8 +602,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_week_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -633,8 +632,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_quarter_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 8, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 8, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -662,12 +661,12 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_quarter_func_boundaries(self):
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
|
||||
last_quarter_2014 = datetime(2014, 12, 31, 13, 0)
|
||||
first_quarter_2015 = datetime(2015, 1, 1, 13, 0)
|
||||
last_quarter_2014 = datetime.datetime(2014, 12, 31, 13, 0)
|
||||
first_quarter_2015 = datetime.datetime(2015, 1, 1, 13, 0)
|
||||
if settings.USE_TZ:
|
||||
last_quarter_2014 = timezone.make_aware(last_quarter_2014)
|
||||
first_quarter_2015 = timezone.make_aware(first_quarter_2015)
|
||||
@@ -691,13 +690,13 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_week_func_boundaries(self):
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
|
||||
week_52_day_2014 = datetime(2014, 12, 27, 13, 0) # Sunday
|
||||
week_1_day_2014_2015 = datetime(2014, 12, 31, 13, 0) # Wednesday
|
||||
week_53_day_2015 = datetime(2015, 12, 31, 13, 0) # Thursday
|
||||
week_52_day_2014 = datetime.datetime(2014, 12, 27, 13, 0) # Sunday
|
||||
week_1_day_2014_2015 = datetime.datetime(2014, 12, 31, 13, 0) # Wednesday
|
||||
week_53_day_2015 = datetime.datetime(2015, 12, 31, 13, 0) # Thursday
|
||||
if settings.USE_TZ:
|
||||
week_1_day_2014_2015 = timezone.make_aware(week_1_day_2014_2015)
|
||||
week_52_day_2014 = timezone.make_aware(week_52_day_2014)
|
||||
@@ -725,8 +724,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_weekday_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -760,8 +759,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_iso_weekday_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -795,8 +794,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_hour_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -824,8 +823,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_minute_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -859,8 +858,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_second_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -894,8 +893,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_extract_second_func_no_fractional(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 30, 50, 783)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 30, 50, 783)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -910,8 +909,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_lookup_name_sql_injection(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -931,8 +930,8 @@ class DateFunctionTests(TestCase):
|
||||
self.assertIs(exists, False)
|
||||
|
||||
def test_trunc_func(self):
|
||||
start_datetime = datetime(999, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(999, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1045,14 +1044,14 @@ class DateFunctionTests(TestCase):
|
||||
|
||||
def test_trunc_week(self):
|
||||
self._test_trunc_week(
|
||||
start_datetime=datetime(2015, 6, 15, 14, 30, 50, 321),
|
||||
end_datetime=datetime(2016, 6, 15, 14, 10, 50, 123),
|
||||
start_datetime=datetime.datetime(2015, 6, 15, 14, 30, 50, 321),
|
||||
end_datetime=datetime.datetime(2016, 6, 15, 14, 10, 50, 123),
|
||||
)
|
||||
|
||||
def test_trunc_week_before_1000(self):
|
||||
self._test_trunc_week(
|
||||
start_datetime=datetime(999, 6, 15, 14, 30, 50, 321),
|
||||
end_datetime=datetime(2016, 6, 15, 14, 10, 50, 123),
|
||||
start_datetime=datetime.datetime(999, 6, 15, 14, 30, 50, 321),
|
||||
end_datetime=datetime.datetime(2016, 6, 15, 14, 10, 50, 123),
|
||||
)
|
||||
|
||||
def test_trunc_invalid_arguments(self):
|
||||
@@ -1108,8 +1107,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_year_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "year")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "year"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1155,13 +1156,15 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_quarter_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 10, 15, 14, 10, 50, 123), "quarter")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 10, 15, 14, 10, 50, 123), "quarter"
|
||||
)
|
||||
last_quarter_2015 = truncate_to(
|
||||
datetime(2015, 12, 31, 14, 10, 50, 123), "quarter"
|
||||
datetime.datetime(2015, 12, 31, 14, 10, 50, 123), "quarter"
|
||||
)
|
||||
first_quarter_2016 = truncate_to(
|
||||
datetime(2016, 1, 1, 14, 10, 50, 123), "quarter"
|
||||
datetime.datetime(2016, 1, 1, 14, 10, 50, 123), "quarter"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
@@ -1212,8 +1215,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_month_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "month")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "month"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1259,8 +1264,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_week_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "week")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "week"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1296,8 +1303,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_date_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1343,8 +1350,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_time_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1390,8 +1397,8 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_time_comparison(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 26) # 0 microseconds.
|
||||
end_datetime = datetime(2015, 6, 15, 14, 30, 26, 321)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 26) # 0 microseconds.
|
||||
end_datetime = datetime.datetime(2015, 6, 15, 14, 30, 26, 321)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1417,8 +1424,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_day_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "day")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "day"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1453,8 +1462,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_hour_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "hour")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "hour"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1500,8 +1511,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_minute_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "minute")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "minute"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1549,8 +1562,10 @@ class DateFunctionTests(TestCase):
|
||||
)
|
||||
|
||||
def test_trunc_second_func(self):
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(datetime(2016, 6, 15, 14, 10, 50, 123), "second")
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = truncate_to(
|
||||
datetime.datetime(2016, 6, 15, 14, 10, 50, 123), "second"
|
||||
)
|
||||
if settings.USE_TZ:
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
@@ -1600,9 +1615,9 @@ class DateFunctionTests(TestCase):
|
||||
def test_trunc_subquery_with_parameters(self):
|
||||
author_1 = Author.objects.create(name="J. R. R. Tolkien")
|
||||
author_2 = Author.objects.create(name="G. R. R. Martin")
|
||||
fan_since_1 = datetime(2016, 2, 3, 15, 0, 0)
|
||||
fan_since_2 = datetime(2015, 2, 3, 15, 0, 0)
|
||||
fan_since_3 = datetime(2017, 2, 3, 15, 0, 0)
|
||||
fan_since_1 = datetime.datetime(2016, 2, 3, 15, 0, 0)
|
||||
fan_since_2 = datetime.datetime(2015, 2, 3, 15, 0, 0)
|
||||
fan_since_3 = datetime.datetime(2017, 2, 3, 15, 0, 0)
|
||||
if settings.USE_TZ:
|
||||
fan_since_1 = timezone.make_aware(fan_since_1)
|
||||
fan_since_2 = timezone.make_aware(fan_since_2)
|
||||
@@ -1622,25 +1637,25 @@ class DateFunctionTests(TestCase):
|
||||
outer = Author.objects.annotate(
|
||||
newest_fan_year=TruncYear(Subquery(inner, output_field=DateTimeField()))
|
||||
)
|
||||
tz = datetime_timezone.utc if settings.USE_TZ else None
|
||||
tz = datetime.UTC if settings.USE_TZ else None
|
||||
self.assertSequenceEqual(
|
||||
outer.order_by("name").values("name", "newest_fan_year"),
|
||||
[
|
||||
{
|
||||
"name": "G. R. R. Martin",
|
||||
"newest_fan_year": datetime(2017, 1, 1, 0, 0, tzinfo=tz),
|
||||
"newest_fan_year": datetime.datetime(2017, 1, 1, 0, 0, tzinfo=tz),
|
||||
},
|
||||
{
|
||||
"name": "J. R. R. Tolkien",
|
||||
"newest_fan_year": datetime(2016, 1, 1, 0, 0, tzinfo=tz),
|
||||
"newest_fan_year": datetime.datetime(2016, 1, 1, 0, 0, tzinfo=tz),
|
||||
},
|
||||
],
|
||||
)
|
||||
|
||||
def test_extract_outerref(self):
|
||||
datetime_1 = datetime(2000, 1, 1)
|
||||
datetime_2 = datetime(2001, 3, 5)
|
||||
datetime_3 = datetime(2002, 1, 3)
|
||||
datetime_1 = datetime.datetime(2000, 1, 1)
|
||||
datetime_2 = datetime.datetime(2001, 3, 5)
|
||||
datetime_3 = datetime.datetime(2002, 1, 3)
|
||||
if settings.USE_TZ:
|
||||
datetime_1 = timezone.make_aware(datetime_1)
|
||||
datetime_2 = timezone.make_aware(datetime_2)
|
||||
@@ -1669,13 +1684,13 @@ class DateFunctionTests(TestCase):
|
||||
@override_settings(USE_TZ=True, TIME_ZONE="UTC")
|
||||
class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
def test_extract_func_with_timezone(self):
|
||||
start_datetime = datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime.datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
self.create_model(start_datetime, end_datetime)
|
||||
delta_tzinfo_pos = datetime_timezone(timedelta(hours=5))
|
||||
delta_tzinfo_neg = datetime_timezone(timedelta(hours=-5, minutes=17))
|
||||
delta_tzinfo_pos = datetime.timezone(datetime.timedelta(hours=5))
|
||||
delta_tzinfo_neg = datetime.timezone(datetime.timedelta(hours=-5, minutes=17))
|
||||
melb = zoneinfo.ZoneInfo("Australia/Melbourne")
|
||||
|
||||
qs = DTModel.objects.annotate(
|
||||
@@ -1729,8 +1744,8 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
self.assertEqual(melb_model.hour_melb, 9)
|
||||
|
||||
def test_extract_func_with_timezone_minus_no_offset(self):
|
||||
start_datetime = datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime.datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
self.create_model(start_datetime, end_datetime)
|
||||
@@ -1752,8 +1767,8 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
self.assertEqual(ust_nera_model.hour_tz, 9)
|
||||
|
||||
def test_extract_func_explicit_timezone_priority(self):
|
||||
start_datetime = datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 23, 30, 1, 321)
|
||||
end_datetime = datetime.datetime(2015, 6, 16, 13, 11, 27, 123)
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
self.create_model(start_datetime, end_datetime)
|
||||
@@ -1762,9 +1777,7 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
model = (
|
||||
DTModel.objects.annotate(
|
||||
day_melb=Extract("start_datetime", "day"),
|
||||
day_utc=Extract(
|
||||
"start_datetime", "day", tzinfo=datetime_timezone.utc
|
||||
),
|
||||
day_utc=Extract("start_datetime", "day", tzinfo=datetime.UTC),
|
||||
)
|
||||
.order_by("start_datetime")
|
||||
.get()
|
||||
@@ -1785,8 +1798,8 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
).get()
|
||||
|
||||
def test_trunc_timezone_applied_before_truncation(self):
|
||||
start_datetime = datetime(2016, 1, 1, 1, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2016, 1, 1, 1, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
self.create_model(start_datetime, end_datetime)
|
||||
@@ -1826,8 +1839,8 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests):
|
||||
If the truncated datetime transitions to a different offset (daylight
|
||||
saving) then the returned value will have that new timezone/offset.
|
||||
"""
|
||||
start_datetime = datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = datetime.datetime(2015, 6, 15, 14, 30, 50, 321)
|
||||
end_datetime = datetime.datetime(2016, 6, 15, 14, 10, 50, 123)
|
||||
start_datetime = timezone.make_aware(start_datetime)
|
||||
end_datetime = timezone.make_aware(end_datetime)
|
||||
self.create_model(start_datetime, end_datetime)
|
||||
|
||||
Reference in New Issue
Block a user