Fixed #18530 -- Fixed a small regression in the admin filters where wrongly formatted dates passed as url parameters caused an unhandled ValidationError. Thanks to david for the report.
This commit is contained in:
parent
c7f44ae085
commit
c555741aa7
|
@ -8,13 +8,13 @@ certain test -- e.g. being a DateField or ForeignKey.
|
|||
import datetime
|
||||
|
||||
from django.db import models
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.exceptions import ImproperlyConfigured, ValidationError
|
||||
from django.utils.encoding import smart_text
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils import timezone
|
||||
|
||||
from django.contrib.admin.util import (get_model_from_relation,
|
||||
reverse_field_path, get_limit_choices_to_from_path, prepare_lookup_value)
|
||||
from django.contrib.admin.options import IncorrectLookupParameters
|
||||
|
||||
class ListFilter(object):
|
||||
title = None # Human-readable title to appear in the right sidebar.
|
||||
|
@ -129,7 +129,10 @@ class FieldListFilter(ListFilter):
|
|||
return True
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
return queryset.filter(**self.used_parameters)
|
||||
try:
|
||||
return queryset.filter(**self.used_parameters)
|
||||
except ValidationError as e:
|
||||
raise IncorrectLookupParameters(e)
|
||||
|
||||
@classmethod
|
||||
def register(cls, test, list_filter_class, take_priority=False):
|
||||
|
|
|
@ -130,7 +130,7 @@ class CustomArticleAdmin(admin.ModelAdmin):
|
|||
|
||||
|
||||
class ThingAdmin(admin.ModelAdmin):
|
||||
list_filter = ('color__warm', 'color__value')
|
||||
list_filter = ('color__warm', 'color__value', 'pub_date',)
|
||||
|
||||
|
||||
class InquisitionAdmin(admin.ModelAdmin):
|
||||
|
|
|
@ -128,6 +128,7 @@ class Color2(Color):
|
|||
class Thing(models.Model):
|
||||
title = models.CharField(max_length=20)
|
||||
color = models.ForeignKey(Color, limit_choices_to={'warm': True})
|
||||
pub_date = models.DateField(blank=True, null=True)
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
|
|
@ -436,6 +436,10 @@ class AdminViewBasicTest(TestCase):
|
|||
response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'color__id__exact': 'StringNotInteger!'})
|
||||
self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)
|
||||
|
||||
# Regression test for #18530
|
||||
response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'pub_date__gte': 'foo'})
|
||||
self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)
|
||||
|
||||
def testIsNullLookups(self):
|
||||
"""Ensure is_null is handled correctly."""
|
||||
Article.objects.create(title="I Could Go Anywhere", content="Versatile", date=datetime.datetime.now())
|
||||
|
|
Loading…
Reference in New Issue