summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2021-09-09 12:56:54 +0200
committerCarlton Gibson <carlton.gibson@noumenal.es>2021-09-09 12:56:54 +0200
commit84cb8fd4394c7080c9294974f1c4b0f733c0cdf0 (patch)
treebc6040351e34cb7e4ed826f259721be7c4d9724a /django
parentdad1f9d3fd950e0627d2eeef6e37a2fa34931ba2 (diff)
downloaddjango-make-zoneinfo-default-timezone-implementation.tar.gz
Release notes and deprecation.txt pending.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/templatetags/admin_list.py3
-rw-r--r--django/db/models/functions/datetime.py4
-rw-r--r--django/db/models/query.py2
-rw-r--r--django/utils/timezone.py15
4 files changed, 19 insertions, 5 deletions
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index b82440e9f8..bc74a2a3d6 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -1,5 +1,6 @@
import datetime
+from django.conf import settings
from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
from django.contrib.admin.utils import (
display_for_field, display_for_value, get_fields_from_path,
@@ -328,7 +329,7 @@ def date_hierarchy(cl):
field = get_fields_from_path(cl.model, field_name)[-1]
if isinstance(field, models.DateTimeField):
dates_or_datetimes = 'datetimes'
- qs_kwargs = {'is_dst': True}
+ qs_kwargs = {'is_dst': True} if settings.USE_DEPRECATED_PYTZ else {}
else:
dates_or_datetimes = 'dates'
qs_kwargs = {}
diff --git a/django/db/models/functions/datetime.py b/django/db/models/functions/datetime.py
index 20161bef38..28ca952072 100644
--- a/django/db/models/functions/datetime.py
+++ b/django/db/models/functions/datetime.py
@@ -188,7 +188,7 @@ class TruncBase(TimezoneMixin, Transform):
kind = None
tzinfo = None
- def __init__(self, expression, output_field=None, tzinfo=None, is_dst=None, **extra):
+ def __init__(self, expression, output_field=None, tzinfo=None, is_dst=timezone.IS_DST_PASSED, **extra):
self.tzinfo = tzinfo
self.is_dst = is_dst
super().__init__(expression, output_field=output_field, **extra)
@@ -264,7 +264,7 @@ class TruncBase(TimezoneMixin, Transform):
class Trunc(TruncBase):
- def __init__(self, expression, kind, output_field=None, tzinfo=None, is_dst=None, **extra):
+ def __init__(self, expression, kind, output_field=None, tzinfo=None, is_dst=timezone.IS_DST_PASSED, **extra):
self.kind = kind
super().__init__(
expression, output_field=output_field, tzinfo=tzinfo,
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 88cfc3de38..9721d95e0b 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -916,7 +916,7 @@ class QuerySet:
'datefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datefield')
- def datetimes(self, field_name, kind, order='ASC', tzinfo=None, is_dst=None):
+ def datetimes(self, field_name, kind, order='ASC', tzinfo=None, is_dst=timezone.IS_DST_PASSED):
"""
Return a list of datetime objects representing all available
datetimes for the given field_name, scoped to 'kind'.
diff --git a/django/utils/timezone.py b/django/utils/timezone.py
index 940095868d..0c95416400 100644
--- a/django/utils/timezone.py
+++ b/django/utils/timezone.py
@@ -3,6 +3,7 @@ Timezone-related classes and functions.
"""
import functools
+import warnings
try:
import zoneinfo
@@ -15,6 +16,7 @@ from datetime import datetime, timedelta, timezone, tzinfo
from asgiref.local import Local
from django.conf import settings
+from django.utils.deprecation import RemovedInDjango50Warning
__all__ = [ # noqa: F822 RemovedInDjango50Warning
'utc', 'get_fixed_timezone',
@@ -25,6 +27,9 @@ __all__ = [ # noqa: F822 RemovedInDjango50Warning
'is_aware', 'is_naive', 'make_aware', 'make_naive',
]
+# RemovedInDjango50Warning
+IS_DST_PASSED = object()
+
# RemovedInDjango50Warning
# This code has two purposes.
@@ -248,8 +253,16 @@ def is_naive(value):
return value.utcoffset() is None
-def make_aware(value, timezone=None, is_dst=None):
+def make_aware(value, timezone=None, is_dst=IS_DST_PASSED):
"""Make a naive datetime.datetime in a given time zone aware."""
+ if is_dst is IS_DST_PASSED:
+ is_dst = None
+ else:
+ warnings.warn(
+ 'The is_dst argument to make_aware() is deprecated as it has no '
+ 'effect with zoneinfo time zones.',
+ RemovedInDjango50Warning
+ )
if timezone is None:
timezone = get_current_timezone()
if _is_pytz_zone(timezone):