Commit 33a6201f authored by Jannis Leidel's avatar Jannis Leidel
Browse files

[1.2.X] Fixed #14312 -- Raising an ``IncorrectLookupParameters`` if the page...

[1.2.X] Fixed #14312 -- Raising an ``IncorrectLookupParameters`` if the page number given to an admin change list exceeds the number of the last page. Thanks, mk.

Backport from trunk (r14889).

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14908 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 49c2f23e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ class ChangeList(object):
            try:
                result_list = paginator.page(self.page_num+1).object_list
            except InvalidPage:
                result_list = ()
                raise IncorrectLookupParameters

        self.result_count = result_count
        self.full_result_count = full_result_count
+23 −0
Original line number Diff line number Diff line
from django.contrib import admin
from django.contrib.admin.options import IncorrectLookupParameters
from django.contrib.admin.views.main import ChangeList
from django.template import Context, Template
from django.test import TransactionTestCase
@@ -71,6 +72,28 @@ class ChangeListTests(TransactionTestCase):
        self.assertFalse('<td>%s</td>' % editable_name_field == -1,
            'Failed to find "name" list_editable field in: %s' % table_output)

    def test_result_list_editable(self):
        """
        Regression test for #14312: list_editable with pagination
        """

        new_parent = Parent.objects.create(name='parent')
        for i in range(200):
            new_child = Child.objects.create(name='name %s' % i, parent=new_parent)
        request = MockRequest()
        request.GET['p'] = -1 # Anything outside range
        m = ChildAdmin(Child, admin.site)

        # Test with list_editable fields
        m.list_display = ['id', 'name', 'parent']
        m.list_display_links = ['id']
        m.list_editable = ['name']
        self.assertRaises(IncorrectLookupParameters, lambda: \
            ChangeList(request, Child, m.list_display, m.list_display_links,
                    m.list_filter, m.date_hierarchy, m.search_fields,
                    m.list_select_related, m.list_per_page, m.list_editable, m))


class ChildAdmin(admin.ModelAdmin):
    list_display = ['name', 'parent']
    def queryset(self, request):