summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-12-05 04:32:36 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-12-05 04:32:36 +0000
commitee48da24050a4f447f6ba153430c59b93a1522b3 (patch)
tree53ce709ca7825d4fd9c2d7215fd7aea8255efb3b /tests
parent23a19240da9894c9784952693d194c8894f077cf (diff)
Fixed #14773 -- Modified MultipleObjectMixin to allow for custom paginators. Thanks to piquadrat for the report and initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14828 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/generic_views/list.py17
-rw-r--r--tests/regressiontests/generic_views/urls.py4
-rw-r--r--tests/regressiontests/generic_views/views.py18
3 files changed, 38 insertions, 1 deletions
diff --git a/tests/regressiontests/generic_views/list.py b/tests/regressiontests/generic_views/list.py
index 8f6af741f7..bde741ef26 100644
--- a/tests/regressiontests/generic_views/list.py
+++ b/tests/regressiontests/generic_views/list.py
@@ -2,7 +2,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase
from regressiontests.generic_views.models import Author
-
+from regressiontests.generic_views.views import CustomPaginator
class ListViewTests(TestCase):
fixtures = ['generic-views-test-data.json']
@@ -86,6 +86,21 @@ class ListViewTests(TestCase):
res = self.client.get('/list/authors/paginated/?page=frog')
self.assertEqual(res.status_code, 404)
+ def test_paginated_custom_paginator_class(self):
+ self._make_authors(7)
+ res = self.client.get('/list/authors/paginated/custom_class/')
+ self.assertEqual(res.status_code, 200)
+ self.assertIsInstance(res.context['paginator'], CustomPaginator)
+ # Custom pagination allows for 2 orphans on a page size of 5
+ self.assertEqual(len(res.context['object_list']), 7)
+
+ def test_paginated_custom_paginator_constructor(self):
+ self._make_authors(7)
+ res = self.client.get('/list/authors/paginated/custom_constructor/')
+ self.assertEqual(res.status_code, 200)
+ # Custom pagination allows for 2 orphans on a page size of 5
+ self.assertEqual(len(res.context['object_list']), 7)
+
def test_allow_empty_false(self):
res = self.client.get('/list/authors/notempty/')
self.assertEqual(res.status_code, 200)
diff --git a/tests/regressiontests/generic_views/urls.py b/tests/regressiontests/generic_views/urls.py
index 0643b400ff..db09d63692 100644
--- a/tests/regressiontests/generic_views/urls.py
+++ b/tests/regressiontests/generic_views/urls.py
@@ -117,6 +117,10 @@ urlpatterns = patterns('',
views.AuthorList.as_view(context_object_name='object_list')),
(r'^list/authors/invalid/$',
views.AuthorList.as_view(queryset=None)),
+ (r'^list/authors/paginated/custom_class/$',
+ views.AuthorList.as_view(paginate_by=5, paginator_class=views.CustomPaginator)),
+ (r'^list/authors/paginated/custom_constructor/$',
+ views.AuthorListCustomPaginator.as_view()),
# YearArchiveView
# Mixing keyword and possitional captures below is intentional; the views
diff --git a/tests/regressiontests/generic_views/views.py b/tests/regressiontests/generic_views/views.py
index 62cced6aab..e3a3c40694 100644
--- a/tests/regressiontests/generic_views/views.py
+++ b/tests/regressiontests/generic_views/views.py
@@ -1,4 +1,5 @@
from django.contrib.auth.decorators import login_required
+from django.core.paginator import Paginator
from django.core.urlresolvers import reverse
from django.utils.decorators import method_decorator
from django.views import generic
@@ -50,6 +51,23 @@ class AuthorList(generic.ListView):
queryset = Author.objects.all()
+class CustomPaginator(Paginator):
+ def __init__(self, queryset, page_size, orphans=0, allow_empty_first_page=True):
+ super(CustomPaginator, self).__init__(
+ queryset,
+ page_size,
+ orphans=2,
+ allow_empty_first_page=allow_empty_first_page)
+
+class AuthorListCustomPaginator(AuthorList):
+ paginate_by = 5;
+
+ def get_paginator(self, queryset, page_size, orphans=0, allow_empty_first_page=True):
+ return super(AuthorListCustomPaginator, self).get_paginator(
+ queryset,
+ page_size,
+ orphans=2,
+ allow_empty_first_page=allow_empty_first_page)
class ArtistCreate(generic.CreateView):
model = Artist