Commit 17ed99f3 authored by Loic Bistuer's avatar Loic Bistuer Committed by Baptiste Mispelon
Browse files

Fixed #21432 -- DateTimeQuery now copies tzinfo when cloning.

Thanks Enrique Martínez for the report and @bmispelon for the tests.
parent 3e845b79
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -260,6 +260,11 @@ class DateTimeQuery(DateQuery):

    compiler = 'SQLDateTimeCompiler'

    def clone(self, klass=None, memo=None, **kwargs):
        if 'tzinfo' not in kwargs and hasattr(self, 'tzinfo'):
            kwargs['tzinfo'] = self.tzinfo
        return super(DateTimeQuery, self).clone(klass, memo, **kwargs)

    def _check_field(self, field):
        assert isinstance(field, DateTimeField), \
            "%r isn't a DateTimeField." % field.name
+17 −1
Original line number Diff line number Diff line
from __future__ import unicode_literals

import datetime
from unittest import skipIf

try:
    import pytz
except ImportError:
    pytz = None

from django.test import TestCase, override_settings
from django.utils import timezone

from django.test import TestCase

from .models import Article, Comment, Category

@@ -81,3 +89,11 @@ class DateTimesTests(TestCase):
            ],
            lambda d: d,
        )

    @skipIf(pytz is None, "this test requires pytz")
    @override_settings(USE_TZ=True)
    def test_21432(self):
        now = timezone.localtime(timezone.now().replace(microsecond=0))
        Article.objects.create(title="First one", pub_date=now)
        qs = Article.objects.datetimes('pub_date', 'second')
        self.assertEqual(qs[0], now)