summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/filters.py9
-rw-r--r--tests/admin_filters/tests.py13
2 files changed, 16 insertions, 6 deletions
diff --git a/django/contrib/admin/filters.py b/django/contrib/admin/filters.py
index 4f04a474dd..9c5fbf7d8c 100644
--- a/django/contrib/admin/filters.py
+++ b/django/contrib/admin/filters.py
@@ -303,6 +303,11 @@ class DateFieldListFilter(FieldListFilter):
else: # field is a models.DateField
today = now.date()
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_until = '%s__lt' % field_path
@@ -318,11 +323,11 @@ class DateFieldListFilter(FieldListFilter):
}),
(_('This month'), {
self.lookup_kwarg_since: str(today.replace(day=1)),
- self.lookup_kwarg_until: str(tomorrow),
+ self.lookup_kwarg_until: str(next_month),
}),
(_('This year'), {
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__(
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py
index 5e6b122fec..99b21bd266 100644
--- a/tests/admin_filters/tests.py
+++ b/tests/admin_filters/tests.py
@@ -143,6 +143,11 @@ class ListFiltersTests(TestCase):
self.today = datetime.date.today()
self.tomorrow = self.today + datetime.timedelta(days=1)
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()
@@ -196,7 +201,7 @@ class ListFiltersTests(TestCase):
% (self.today, self.tomorrow))
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)
# Make sure the correct queryset is returned
@@ -214,10 +219,10 @@ class ListFiltersTests(TestCase):
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%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),
- 'date_registered__lt': self.tomorrow})
+ 'date_registered__lt': self.next_year})
changelist = self.get_changelist(request, Book, modeladmin)
# Make sure the correct queryset is returned
@@ -235,7 +240,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%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),
'date_registered__lt': str(self.tomorrow)})