[1.6.x] Fixed #21186: Fixed regression when using date fields in the admin's list_filter.
Thanks to onlygoldi2201 for the report and to ramiro and apollo13
for the reviews.
Backport of 8f51ba669a
from master.
This commit is contained in:
parent
15bdc85117
commit
c2a35d40db
|
@ -301,6 +301,11 @@ class DateFieldListFilter(FieldListFilter):
|
||||||
else: # field is a models.DateField
|
else: # field is a models.DateField
|
||||||
today = now.date()
|
today = now.date()
|
||||||
tomorrow = today + datetime.timedelta(days=1)
|
tomorrow = today + datetime.timedelta(days=1)
|
||||||
|
if today.month == 12:
|
||||||
|
next_month = today.replace(year=today.year + 1, month=1, day=1)
|
||||||
|
else:
|
||||||
|
next_month = today.replace(month=today.month + 1, day=1)
|
||||||
|
next_year = today.replace(year=today.year + 1, month=1, day=1)
|
||||||
|
|
||||||
self.lookup_kwarg_since = '%s__gte' % field_path
|
self.lookup_kwarg_since = '%s__gte' % field_path
|
||||||
self.lookup_kwarg_until = '%s__lt' % field_path
|
self.lookup_kwarg_until = '%s__lt' % field_path
|
||||||
|
@ -316,11 +321,11 @@ class DateFieldListFilter(FieldListFilter):
|
||||||
}),
|
}),
|
||||||
(_('This month'), {
|
(_('This month'), {
|
||||||
self.lookup_kwarg_since: str(today.replace(day=1)),
|
self.lookup_kwarg_since: str(today.replace(day=1)),
|
||||||
self.lookup_kwarg_until: str(tomorrow),
|
self.lookup_kwarg_until: str(next_month),
|
||||||
}),
|
}),
|
||||||
(_('This year'), {
|
(_('This year'), {
|
||||||
self.lookup_kwarg_since: str(today.replace(month=1, day=1)),
|
self.lookup_kwarg_since: str(today.replace(month=1, day=1)),
|
||||||
self.lookup_kwarg_until: str(tomorrow),
|
self.lookup_kwarg_until: str(next_year),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
super(DateFieldListFilter, self).__init__(
|
super(DateFieldListFilter, self).__init__(
|
||||||
|
|
|
@ -143,6 +143,11 @@ class ListFiltersTests(TestCase):
|
||||||
self.today = datetime.date.today()
|
self.today = datetime.date.today()
|
||||||
self.tomorrow = self.today + datetime.timedelta(days=1)
|
self.tomorrow = self.today + datetime.timedelta(days=1)
|
||||||
self.one_week_ago = self.today - datetime.timedelta(days=7)
|
self.one_week_ago = self.today - datetime.timedelta(days=7)
|
||||||
|
if self.today.month == 12:
|
||||||
|
self.next_month = self.today.replace(year=self.today.year + 1, month=1, day=1)
|
||||||
|
else:
|
||||||
|
self.next_month = self.today.replace(month=self.today.month + 1, day=1)
|
||||||
|
self.next_year = self.today.replace(year=self.today.year + 1, month=1, day=1)
|
||||||
|
|
||||||
self.request_factory = RequestFactory()
|
self.request_factory = RequestFactory()
|
||||||
|
|
||||||
|
@ -196,7 +201,7 @@ class ListFiltersTests(TestCase):
|
||||||
% (self.today, self.tomorrow))
|
% (self.today, self.tomorrow))
|
||||||
|
|
||||||
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(day=1),
|
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(day=1),
|
||||||
'date_registered__lt': self.tomorrow})
|
'date_registered__lt': self.next_month})
|
||||||
changelist = self.get_changelist(request, Book, modeladmin)
|
changelist = self.get_changelist(request, Book, modeladmin)
|
||||||
|
|
||||||
# Make sure the correct queryset is returned
|
# Make sure the correct queryset is returned
|
||||||
|
@ -214,10 +219,10 @@ class ListFiltersTests(TestCase):
|
||||||
self.assertEqual(choice['selected'], True)
|
self.assertEqual(choice['selected'], True)
|
||||||
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
|
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
|
||||||
'&date_registered__lt=%s'
|
'&date_registered__lt=%s'
|
||||||
% (self.today.replace(day=1), self.tomorrow))
|
% (self.today.replace(day=1), self.next_month))
|
||||||
|
|
||||||
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(month=1, day=1),
|
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(month=1, day=1),
|
||||||
'date_registered__lt': self.tomorrow})
|
'date_registered__lt': self.next_year})
|
||||||
changelist = self.get_changelist(request, Book, modeladmin)
|
changelist = self.get_changelist(request, Book, modeladmin)
|
||||||
|
|
||||||
# Make sure the correct queryset is returned
|
# Make sure the correct queryset is returned
|
||||||
|
@ -235,7 +240,7 @@ class ListFiltersTests(TestCase):
|
||||||
self.assertEqual(choice['selected'], True)
|
self.assertEqual(choice['selected'], True)
|
||||||
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
|
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
|
||||||
'&date_registered__lt=%s'
|
'&date_registered__lt=%s'
|
||||||
% (self.today.replace(month=1, day=1), self.tomorrow))
|
% (self.today.replace(month=1, day=1), self.next_year))
|
||||||
|
|
||||||
request = self.request_factory.get('/', {'date_registered__gte': str(self.one_week_ago),
|
request = self.request_factory.get('/', {'date_registered__gte': str(self.one_week_ago),
|
||||||
'date_registered__lt': str(self.tomorrow)})
|
'date_registered__lt': str(self.tomorrow)})
|
||||||
|
|
Loading…
Reference in New Issue