X-Git-Url: https://git.mdrn.pl/django-pagination.git/blobdiff_plain/465fb3a7654c3a1900b2692a55fa3fe64a73ddad..c8a9f4983b1e6247bbb17d69257f144fafb4e646:/linaro_django_pagination/paginator.py diff --git a/linaro_django_pagination/paginator.py b/linaro_django_pagination/paginator.py index f67aa23..69d5a86 100644 --- a/linaro_django_pagination/paginator.py +++ b/linaro_django_pagination/paginator.py @@ -1,5 +1,37 @@ +# Copyright (c) 2008, Eric Florenzano +# Copyright (c) 2010, 2011 Linaro Limited +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the author nor the names of other +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + from django.core.paginator import Paginator, Page, PageNotAnInteger, EmptyPage + class InfinitePaginator(Paginator): """ Paginator designed for cases when it's not important to know how many total @@ -81,8 +113,7 @@ class InfinitePage(Page): Checks for one more item than last on this page. """ try: - next_item = self.paginator.object_list[ - self.number * self.paginator.per_page] + self.paginator.object_list[self.number * self.paginator.per_page] except IndexError: return False return True @@ -107,6 +138,7 @@ class InfinitePage(Page): return self.paginator.link_template % (self.number - 1) return None + class FinitePaginator(InfinitePaginator): """ Paginator for cases when the list of items is already finite. @@ -150,6 +182,7 @@ class FinitePaginator(InfinitePaginator): page_items = self.object_list[:self.per_page] return FinitePage(page_items, number, self) + class FinitePage(InfinitePage): def has_next(self): @@ -157,7 +190,7 @@ class FinitePage(InfinitePage): Checks for one more item than last on this page. """ try: - next_item = self.paginator.object_list[self.paginator.per_page] + self.paginator.object_list[self.paginator.per_page] except IndexError: return False return True @@ -168,4 +201,4 @@ class FinitePage(InfinitePage): relative to total objects in the paginator. """ ## TODO should this holler if you haven't defined the offset? - return self.paginator.offset \ No newline at end of file + return self.paginator.offset