Author: jezdez
Date: 2010-12-12 16:58:47 -0600 (Sun, 12 Dec 2010)
New Revision: 14889

Modified:
   django/trunk/django/contrib/admin/views/main.py
   django/trunk/tests/regressiontests/admin_changelist/tests.py
Log:
Fixed #14312 -- Raising an ``IncorrectLookupParameters`` if the page number 
given to an admin change list exceeds the number of the last page. Thanks, mk.

Modified: django/trunk/django/contrib/admin/views/main.py
===================================================================
--- django/trunk/django/contrib/admin/views/main.py     2010-12-12 22:58:25 UTC 
(rev 14888)
+++ django/trunk/django/contrib/admin/views/main.py     2010-12-12 22:58:47 UTC 
(rev 14889)
@@ -117,7 +117,7 @@
             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

Modified: django/trunk/tests/regressiontests/admin_changelist/tests.py
===================================================================
--- django/trunk/tests/regressiontests/admin_changelist/tests.py        
2010-12-12 22:58:25 UTC (rev 14888)
+++ django/trunk/tests/regressiontests/admin_changelist/tests.py        
2010-12-12 22:58:47 UTC (rev 14889)
@@ -1,4 +1,5 @@
 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 @@
         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):

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to