Skip to content

Commit

Permalink
Fixes to get_tz_backend (#110)
Browse files Browse the repository at this point in the history
Fix get_tz_backend
  • Loading branch information
mfogel authored Sep 7, 2023
1 parent 06c3c09 commit a7872a9
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 9 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ poetry run pytest

## Changelog

#### `main` (not yet released to pypi)

- Use correct default backend when running with django 3.X ([#109](https://github.com/mfogel/django-timezone-field/issues/109))

#### 6.0 (2023-08-20)

- BREAKING: `pytz` removed from dependencies. If you use this package with `use_pytz=True`, you'll need to install
Expand Down
8 changes: 4 additions & 4 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,25 +96,25 @@ def use_pytz(request):

@pytest.fixture
def to_tzobj(use_pytz):
tz_backend = backends.get_tz_backend(use_pytz=use_pytz)
tz_backend = backends.get_tz_backend(use_pytz)
yield tz_backend.to_tzobj


@pytest.fixture
def utc_tzobj(use_pytz):
tz_backend = backends.get_tz_backend(use_pytz=use_pytz)
tz_backend = backends.get_tz_backend(use_pytz)
yield tz_backend.utc_tzobj


@pytest.fixture
def all_tzstrs(use_pytz):
tz_backend = backends.get_tz_backend(use_pytz=use_pytz)
tz_backend = backends.get_tz_backend(use_pytz)
yield tz_backend.all_tzstrs


@pytest.fixture
def base_tzstrs(use_pytz):
tz_backend = backends.get_tz_backend(use_pytz=use_pytz)
tz_backend = backends.get_tz_backend(use_pytz)
yield tz_backend.base_tzstrs


Expand Down
21 changes: 20 additions & 1 deletion tests/test_backends.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,26 @@
from django import VERSION

from timezone_field.backends import USE_PYTZ_DEFAULT
from timezone_field.backends import USE_PYTZ_DEFAULT, get_tz_backend
from timezone_field.backends.zoneinfo import ZoneInfoBackend


def test_use_pytz_default_USE_DEPRECATED_PYTZ_unset():
assert USE_PYTZ_DEFAULT is (VERSION < (4, 0))


def test_get_tz_backend_when_use_pytz_is_none():
assert get_tz_backend(None) is get_tz_backend(USE_PYTZ_DEFAULT)


def test_get_tz_backend_when_use_pytz_is_false():
assert isinstance(get_tz_backend(False), ZoneInfoBackend)


try:
from timezone_field.backends.pytz import PYTZBackend
except ImportError:
pass
else:

def test_get_tz_backend_when_use_pytz_is_true():
assert isinstance(get_tz_backend(True), PYTZBackend)
3 changes: 2 additions & 1 deletion timezone_field/backends/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
tz_backend_cache = {}


def get_tz_backend(use_pytz=USE_PYTZ_DEFAULT):
def get_tz_backend(use_pytz):
use_pytz = USE_PYTZ_DEFAULT if use_pytz is None else use_pytz
if use_pytz not in tz_backend_cache:
if use_pytz:
from .pytz import PYTZBackend
Expand Down
2 changes: 1 addition & 1 deletion timezone_field/choices.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def with_gmt_offset(timezones, now=None, use_pytz=None):
underscores. For example: "GMT-05:00 America/New York"
* sorted by their timezone offset
"""
tz_backend = get_tz_backend(use_pytz=use_pytz)
tz_backend = get_tz_backend(use_pytz)
now = now or datetime.datetime.now(tz_backend.utc_tzobj)
_choices = []
for tz in timezones:
Expand Down
2 changes: 1 addition & 1 deletion timezone_field/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def __init__(self, *args, **kwargs):
kwargs.setdefault("max_length", self.default_max_length)

self.use_pytz = kwargs.pop("use_pytz", None)
self.tz_backend = get_tz_backend(use_pytz=self.use_pytz)
self.tz_backend = get_tz_backend(self.use_pytz)
self.default_tzs = [self.tz_backend.to_tzobj(v) for v in self.tz_backend.base_tzstrs]

if "choices" in kwargs:
Expand Down
2 changes: 1 addition & 1 deletion timezone_field/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def coerce(val):
class TimeZoneFormField(forms.TypedChoiceField):
def __init__(self, *args, **kwargs):
self.use_pytz = kwargs.pop("use_pytz", None)
self.tz_backend = get_tz_backend(use_pytz=self.use_pytz)
self.tz_backend = get_tz_backend(self.use_pytz)
kwargs.setdefault("coerce", get_coerce(self.tz_backend))
kwargs.setdefault("empty_value", None)

Expand Down

0 comments on commit a7872a9

Please sign in to comment.