diff --git a/django_filters/utils.py b/django_filters/utils.py index 4f6f62690..5dad1ea05 100644 --- a/django_filters/utils.py +++ b/django_filters/utils.py @@ -146,7 +146,7 @@ def resolve_field(model_field, lookup_expr): def handle_timezone(value, is_dst=None): if settings.USE_TZ and timezone.is_naive(value): - return make_aware(value, timezone.get_default_timezone(), is_dst) + return make_aware(value, timezone.get_current_timezone(), is_dst) elif not settings.USE_TZ and timezone.is_aware(value): return timezone.make_naive(value, timezone.utc) return value diff --git a/tests/test_fields.py b/tests/test_fields.py index 5ffc70712..3a60863dc 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -4,9 +4,10 @@ from datetime import datetime, time, timedelta, tzinfo import decimal +import pytz from django import forms from django.test import TestCase, override_settings -from django.utils.timezone import make_aware, get_default_timezone +from django.utils.timezone import activate, deactivate, make_aware, get_default_timezone, get_current_timezone from django_filters.widgets import BaseCSVWidget, CSVWidget, RangeWidget from django_filters.fields import ( @@ -163,6 +164,25 @@ def test_datetime_timezone_awareness(self): self.assertTrue(isinstance(d.tzinfo, tzinfo)) self.assertEqual(d, r) + def test_datetime_timezone_with_current_timezone(self): + z = pytz.timezone('Asia/Tokyo') # Central European Time +01:00 + + f = IsoDateTimeField() + r = make_aware(self.reference_dt, get_default_timezone()) + + activate(z) + d = f.strptime(self.reference_str + "+01:00", IsoDateTimeField.ISO_8601) + deactivate() + self.assertTrue(isinstance(d.tzinfo, tzinfo)) + self.assertEqual(d, r + r.utcoffset() - d.utcoffset()) + + activate(z) + d = f.strptime(self.reference_str + "", IsoDateTimeField.ISO_8601) + deactivate() + self.assertTrue(isinstance(d.tzinfo, tzinfo)) + self.assertEqual(z.zone, d.tzinfo.zone) + self.assertEqual(d, r + r.utcoffset() - d.utcoffset()) + @override_settings(USE_TZ=False) def test_datetime_timezone_naivety(self): # parsed datetimes should obey USE_TZ