diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-12-05 04:32:36 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-12-05 04:32:36 +0000 |
| commit | ee48da24050a4f447f6ba153430c59b93a1522b3 (patch) | |
| tree | 53ce709ca7825d4fd9c2d7215fd7aea8255efb3b /tests | |
| parent | 23a19240da9894c9784952693d194c8894f077cf (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.py | 17 | ||||
| -rw-r--r-- | tests/regressiontests/generic_views/urls.py | 4 | ||||
| -rw-r--r-- | tests/regressiontests/generic_views/views.py | 18 |
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 |
