3
3
from datetime import timezone as datetime_timezone
4
4
5
5
from django .conf import settings
6
- from django .db import connection , DataError , NotSupportedError , OperationalError
6
+ from django .db import DataError , NotSupportedError , OperationalError , connection
7
7
from django .db .models import (
8
8
DateField ,
9
9
DateTimeField ,
@@ -269,13 +269,14 @@ def test_extract_func(self):
269
269
[(start_datetime , start_datetime .year ), (end_datetime , end_datetime .year )],
270
270
lambda m : (m .start_datetime , m .extracted ),
271
271
)
272
- self .assertQuerySetEqual (
273
- DTModel .objects .annotate (
274
- extracted = Extract ("start_datetime" , "quarter" )
275
- ).order_by ("start_datetime" ),
276
- [(start_datetime , 2 ), (end_datetime , 2 )],
277
- lambda m : (m .start_datetime , m .extracted ),
278
- )
272
+ # ExtractQuarter not supported.
273
+ # self.assertQuerySetEqual(
274
+ # DTModel.objects.annotate(
275
+ # extracted=Extract("start_datetime", "quarter")
276
+ # ).order_by("start_datetime"),
277
+ # [(start_datetime, 2), (end_datetime, 2)],
278
+ # lambda m: (m.start_datetime, m.extracted),
279
+ # )
279
280
self .assertQuerySetEqual (
280
281
DTModel .objects .annotate (
281
282
extracted = Extract ("start_datetime" , "month" )
@@ -513,9 +514,9 @@ def test_extract_iso_year_func_boundaries(self):
513
514
week_52_day_2014 = timezone .make_aware (week_52_day_2014 )
514
515
week_53_day_2015 = timezone .make_aware (week_53_day_2015 )
515
516
days = [week_52_day_2014 , week_1_day_2014_2015 , week_53_day_2015 ]
516
- obj_1_iso_2014 = self .create_model (week_52_day_2014 , end_datetime )
517
- obj_1_iso_2015 = self .create_model (week_1_day_2014_2015 , end_datetime )
518
- obj_2_iso_2015 = self .create_model (week_53_day_2015 , end_datetime )
517
+ self .create_model (week_52_day_2014 , end_datetime )
518
+ self .create_model (week_1_day_2014_2015 , end_datetime )
519
+ self .create_model (week_53_day_2015 , end_datetime )
519
520
qs = (
520
521
DTModel .objects .filter (start_datetime__in = days )
521
522
.annotate (
@@ -533,19 +534,20 @@ def test_extract_iso_year_func_boundaries(self):
533
534
lambda m : (m .start_datetime , m .extracted ),
534
535
)
535
536
536
- qs = DTModel .objects .filter (
537
- start_datetime__iso_year = 2015 ,
538
- ).order_by ("start_datetime" )
537
+ # qs = DTModel.objects.filter(
538
+ # start_datetime__iso_year=2015,
539
+ # ).order_by("start_datetime")
539
540
540
- self .assertSequenceEqual (qs , [obj_1_iso_2015 , obj_2_iso_2015 ])
541
- qs = DTModel .objects .filter (
542
- start_datetime__iso_year__gt = 2014 ,
543
- ).order_by ("start_datetime" )
544
- self .assertSequenceEqual (qs , [obj_1_iso_2015 , obj_2_iso_2015 ])
545
- qs = DTModel .objects .filter (
546
- start_datetime__iso_year__lte = 2014 ,
547
- ).order_by ("start_datetime" )
548
- self .assertSequenceEqual (qs , [obj_1_iso_2014 ])
541
+ # Transform not supported.
542
+ # self.assertSequenceEqual(qs, [obj_1_iso_2015, obj_2_iso_2015])
543
+ # qs = DTModel.objects.filter(
544
+ # start_datetime__iso_year__gt=2014,
545
+ # ).order_by("start_datetime")
546
+ # self.assertSequenceEqual(qs, [obj_1_iso_2015, obj_2_iso_2015])
547
+ # qs = DTModel.objects.filter(
548
+ # start_datetime__iso_year__lte=2014,
549
+ # ).order_by("start_datetime")
550
+ # self.assertSequenceEqual(qs, [obj_1_iso_2014])
549
551
550
552
def test_extract_month_func (self ):
551
553
start_datetime = microsecond_support (datetime (2015 , 6 , 15 , 14 , 30 , 50 , 321 ))
@@ -1016,12 +1018,13 @@ def test_datetime_to_time_kind(kind):
1016
1018
test_datetime_to_time_kind ("minute" )
1017
1019
test_datetime_to_time_kind ("second" )
1018
1020
1019
- qs = DTModel .objects .filter (
1020
- start_datetime__date = Trunc (
1021
- "start_datetime" , "day" , output_field = DateField ()
1022
- )
1023
- )
1024
- self .assertEqual (qs .count (), 2 )
1021
+ # qs = DTModel.objects.filter(
1022
+ # start_datetime__date=Trunc(
1023
+ # "start_datetime", "day", output_field=DateField()
1024
+ # )
1025
+ # )
1026
+ # Trunc DateTime to Date not supported.
1027
+ # self.assertEqual(qs.count(), 2)
1025
1028
1026
1029
def _test_trunc_week (self , start_datetime , end_datetime ):
1027
1030
start_datetime = microsecond_support (start_datetime )
@@ -1590,7 +1593,7 @@ def test_trunc_second_func(self):
1590
1593
DTModel .objects .filter (
1591
1594
start_datetime = TruncSecond ("start_datetime" )
1592
1595
).count (),
1593
- 1 ,
1596
+ 1 if connection . features . supports_microsecond_precision else 2 ,
1594
1597
)
1595
1598
1596
1599
with self .assertRaisesMessage (
@@ -1684,8 +1687,8 @@ def test_extract_func_with_timezone(self):
1684
1687
start_datetime = timezone .make_aware (start_datetime )
1685
1688
end_datetime = timezone .make_aware (end_datetime )
1686
1689
self .create_model (start_datetime , end_datetime )
1687
- delta_tzinfo_pos = datetime_timezone (timedelta (hours = 5 ))
1688
- delta_tzinfo_neg = datetime_timezone (timedelta (hours = - 5 , minutes = 17 ))
1690
+ # delta_tzinfo_pos = datetime_timezone(timedelta(hours=5))
1691
+ # delta_tzinfo_neg = datetime_timezone(timedelta(hours=-5, minutes=17))
1689
1692
melb = zoneinfo .ZoneInfo ("Australia/Melbourne" )
1690
1693
1691
1694
qs = DTModel .objects .annotate (
@@ -1697,14 +1700,15 @@ def test_extract_func_with_timezone(self):
1697
1700
weekday_melb = ExtractWeekDay ("start_datetime" , tzinfo = melb ),
1698
1701
isoweekday = ExtractIsoWeekDay ("start_datetime" ),
1699
1702
isoweekday_melb = ExtractIsoWeekDay ("start_datetime" , tzinfo = melb ),
1700
- quarter = ExtractQuarter ("start_datetime" , tzinfo = melb ),
1703
+ # quarter=ExtractQuarter("start_datetime", tzinfo=melb),
1701
1704
hour = ExtractHour ("start_datetime" ),
1702
1705
hour_melb = ExtractHour ("start_datetime" , tzinfo = melb ),
1703
- hour_with_delta_pos = ExtractHour ("start_datetime" , tzinfo = delta_tzinfo_pos ),
1704
- hour_with_delta_neg = ExtractHour ("start_datetime" , tzinfo = delta_tzinfo_neg ),
1705
- minute_with_delta_neg = ExtractMinute (
1706
- "start_datetime" , tzinfo = delta_tzinfo_neg
1707
- ),
1706
+ # Unsupported tz on MongoDB
1707
+ # hour_with_delta_pos=ExtractHour("start_datetime", tzinfo=delta_tzinfo_pos)
1708
+ # hour_with_delta_neg=ExtractHour("start_datetime", tzinfo=delta_tzinfo_neg)
1709
+ # minute_with_delta_neg=ExtractMinute(
1710
+ # "start_datetime", tzinfo=delta_tzinfo_neg
1711
+ # ),
1708
1712
).order_by ("start_datetime" )
1709
1713
1710
1714
utc_model = qs .get ()
@@ -1716,12 +1720,12 @@ def test_extract_func_with_timezone(self):
1716
1720
self .assertEqual (utc_model .weekday_melb , 3 )
1717
1721
self .assertEqual (utc_model .isoweekday , 1 )
1718
1722
self .assertEqual (utc_model .isoweekday_melb , 2 )
1719
- self .assertEqual (utc_model .quarter , 2 )
1723
+ # self.assertEqual(utc_model.quarter, 2)
1720
1724
self .assertEqual (utc_model .hour , 23 )
1721
1725
self .assertEqual (utc_model .hour_melb , 9 )
1722
- self .assertEqual (utc_model .hour_with_delta_pos , 4 )
1723
- self .assertEqual (utc_model .hour_with_delta_neg , 18 )
1724
- self .assertEqual (utc_model .minute_with_delta_neg , 47 )
1726
+ # self.assertEqual(utc_model.hour_with_delta_pos, 4)
1727
+ # self.assertEqual(utc_model.hour_with_delta_neg, 18)
1728
+ # self.assertEqual(utc_model.minute_with_delta_neg, 47)
1725
1729
1726
1730
with timezone .override (melb ):
1727
1731
melb_model = qs .get ()
@@ -1732,7 +1736,7 @@ def test_extract_func_with_timezone(self):
1732
1736
self .assertEqual (melb_model .isoyear , 2015 )
1733
1737
self .assertEqual (melb_model .weekday , 3 )
1734
1738
self .assertEqual (melb_model .isoweekday , 2 )
1735
- self .assertEqual (melb_model .quarter , 2 )
1739
+ # self.assertEqual(melb_model.quarter, 2)
1736
1740
self .assertEqual (melb_model .weekday_melb , 3 )
1737
1741
self .assertEqual (melb_model .isoweekday_melb , 2 )
1738
1742
self .assertEqual (melb_model .hour , 9 )
@@ -1795,8 +1799,8 @@ def test_extract_invalid_field_with_timezone(self):
1795
1799
).get ()
1796
1800
1797
1801
def test_trunc_timezone_applied_before_truncation (self ):
1798
- start_datetime = datetime (2016 , 1 , 1 , 1 , 30 , 50 , 321 )
1799
- end_datetime = datetime (2016 , 6 , 15 , 14 , 10 , 50 , 123 )
1802
+ start_datetime = microsecond_support ( datetime (2016 , 1 , 1 , 1 , 30 , 50 , 321 ) )
1803
+ end_datetime = microsecond_support ( datetime (2016 , 6 , 15 , 14 , 10 , 50 , 123 ) )
1800
1804
start_datetime = timezone .make_aware (start_datetime )
1801
1805
end_datetime = timezone .make_aware (end_datetime )
1802
1806
self .create_model (start_datetime , end_datetime )
@@ -1807,17 +1811,17 @@ def test_trunc_timezone_applied_before_truncation(self):
1807
1811
DTModel .objects .annotate (
1808
1812
melb_year = TruncYear ("start_datetime" , tzinfo = melb ),
1809
1813
pacific_year = TruncYear ("start_datetime" , tzinfo = pacific ),
1810
- melb_date = TruncDate ("start_datetime" , tzinfo = melb ),
1811
- pacific_date = TruncDate ("start_datetime" , tzinfo = pacific ),
1812
- melb_time = TruncTime ("start_datetime" , tzinfo = melb ),
1813
- pacific_time = TruncTime ("start_datetime" , tzinfo = pacific ),
1814
+ # melb_date=TruncDate("start_datetime", tzinfo=melb),
1815
+ # pacific_date=TruncDate("start_datetime", tzinfo=pacific),
1816
+ # melb_time=TruncTime("start_datetime", tzinfo=melb),
1817
+ # pacific_time=TruncTime("start_datetime", tzinfo=pacific),
1814
1818
)
1815
1819
.order_by ("start_datetime" )
1816
1820
.get ()
1817
1821
)
1818
1822
1819
- melb_start_datetime = start_datetime .astimezone (melb )
1820
- pacific_start_datetime = start_datetime .astimezone (pacific )
1823
+ # melb_start_datetime = start_datetime.astimezone(melb)
1824
+ # pacific_start_datetime = start_datetime.astimezone(pacific)
1821
1825
self .assertEqual (model .start_datetime , start_datetime )
1822
1826
self .assertEqual (model .melb_year , truncate_to (start_datetime , "year" , melb ))
1823
1827
self .assertEqual (
@@ -1826,18 +1830,19 @@ def test_trunc_timezone_applied_before_truncation(self):
1826
1830
self .assertEqual (model .start_datetime .year , 2016 )
1827
1831
self .assertEqual (model .melb_year .year , 2016 )
1828
1832
self .assertEqual (model .pacific_year .year , 2015 )
1829
- self .assertEqual (model .melb_date , melb_start_datetime .date ())
1830
- self .assertEqual (model .pacific_date , pacific_start_datetime .date ())
1831
- self .assertEqual (model .melb_time , melb_start_datetime .time ())
1832
- self .assertEqual (model .pacific_time , pacific_start_datetime .time ())
1833
+
1834
+ # self.assertEqual(model.melb_date, melb_start_datetime.date())
1835
+ # self.assertEqual(model.pacific_date, pacific_start_datetime.date())
1836
+ # self.assertEqual(model.melb_time, melb_start_datetime.time())
1837
+ # self.assertEqual(model.pacific_time, pacific_start_datetime.time())
1833
1838
1834
1839
def test_trunc_func_with_timezone (self ):
1835
1840
"""
1836
1841
If the truncated datetime transitions to a different offset (daylight
1837
1842
saving) then the returned value will have that new timezone/offset.
1838
1843
"""
1839
- start_datetime = datetime (2015 , 6 , 15 , 14 , 30 , 50 , 321 )
1840
- end_datetime = datetime (2016 , 6 , 15 , 14 , 10 , 50 , 123 )
1844
+ start_datetime = microsecond_support ( datetime (2015 , 6 , 15 , 14 , 30 , 50 , 321 ) )
1845
+ end_datetime = microsecond_support ( datetime (2016 , 6 , 15 , 14 , 10 , 50 , 123 ) )
1841
1846
start_datetime = timezone .make_aware (start_datetime )
1842
1847
end_datetime = timezone .make_aware (end_datetime )
1843
1848
self .create_model (start_datetime , end_datetime )
@@ -1913,14 +1918,14 @@ def test_datetime_to_time_kind(kind):
1913
1918
lambda m : (m .start_datetime , m .truncated ),
1914
1919
)
1915
1920
1916
- test_datetime_to_date_kind ("year" )
1917
- test_datetime_to_date_kind ("quarter" )
1918
- test_datetime_to_date_kind ("month" )
1919
- test_datetime_to_date_kind ("week" )
1920
- test_datetime_to_date_kind ("day" )
1921
- test_datetime_to_time_kind ("hour" )
1922
- test_datetime_to_time_kind ("minute" )
1923
- test_datetime_to_time_kind ("second" )
1921
+ # test_datetime_to_date_kind("year")
1922
+ # test_datetime_to_date_kind("quarter")
1923
+ # test_datetime_to_date_kind("month")
1924
+ # test_datetime_to_date_kind("week")
1925
+ # test_datetime_to_date_kind("day")
1926
+ # test_datetime_to_time_kind("hour")
1927
+ # test_datetime_to_time_kind("minute")
1928
+ # test_datetime_to_time_kind("second")
1924
1929
test_datetime_kind ("year" )
1925
1930
test_datetime_kind ("quarter" )
1926
1931
test_datetime_kind ("month" )
@@ -1930,12 +1935,12 @@ def test_datetime_to_time_kind(kind):
1930
1935
test_datetime_kind ("minute" )
1931
1936
test_datetime_kind ("second" )
1932
1937
1933
- qs = DTModel .objects .filter (
1934
- start_datetime__date = Trunc (
1935
- "start_datetime" , "day" , output_field = DateField ()
1936
- )
1937
- )
1938
- self .assertEqual (qs .count (), 2 )
1938
+ # qs = DTModel.objects.filter(
1939
+ # start_datetime__date=Trunc(
1940
+ # "start_datetime", "day", output_field=DateField()
1941
+ # )
1942
+ # )
1943
+ # self.assertEqual(qs.count(), 2)
1939
1944
1940
1945
def test_trunc_invalid_field_with_timezone (self ):
1941
1946
melb = zoneinfo .ZoneInfo ("Australia/Melbourne" )
0 commit comments