diff options
| author | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-09-09 15:15:44 +0200 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-09-16 12:11:05 +0200 |
| commit | 306607d5b99b6eca6ae2c1e726d8eb32b9b2ca1b (patch) | |
| tree | 607d1b06feafaf28fc2e09c70652d30659707537 /django/db/backends/base/base.py | |
| parent | 7132d17de1399345a38858c20221850bdef43d0e (diff) | |
Fixed #32365 -- Made zoneinfo the default timezone implementation.
Thanks to Adam Johnson, Aymeric Augustin, David Smith, Mariusz Felisiak, Nick
Pope, and Paul Ganssle for reviews.
Diffstat (limited to 'django/db/backends/base/base.py')
| -rw-r--r-- | django/db/backends/base/base.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/django/db/backends/base/base.py b/django/db/backends/base/base.py index 42b4b178bf..b6800e5519 100644 --- a/django/db/backends/base/base.py +++ b/django/db/backends/base/base.py @@ -6,7 +6,10 @@ import warnings from collections import deque from contextlib import contextmanager -import pytz +try: + import zoneinfo +except ImportError: + from backports import zoneinfo from django.conf import settings from django.core.exceptions import ImproperlyConfigured @@ -23,6 +26,14 @@ from django.utils.functional import cached_property NO_DB_ALIAS = '__no_db__' +# RemovedInDjango50Warning +def timezone_constructor(tzname): + if settings.USE_DEPRECATED_PYTZ: + import pytz + return pytz.timezone(tzname) + return zoneinfo.ZoneInfo(tzname) + + class BaseDatabaseWrapper: """Represent a database connection.""" # Mapping of Field objects to their column types. @@ -135,7 +146,7 @@ class BaseDatabaseWrapper: elif self.settings_dict['TIME_ZONE'] is None: return timezone.utc else: - return pytz.timezone(self.settings_dict['TIME_ZONE']) + return timezone_constructor(self.settings_dict['TIME_ZONE']) @cached_property def timezone_name(self): |
