12345678910111213141516171819202122 |
- from django.core.paginator import Paginator
- class PostsPaginator(Paginator):
- """paginator that makes last item on page repeat as first item on next page."""
- def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True):
- per_page = int(per_page) - 1
- if orphans:
- orphans += 1
- super().__init__(object_list, per_page, orphans, allow_empty_first_page)
- def page(self, number):
- """returns a Page object for the given 1-based page number."""
- number = self.validate_number(number)
- bottom = (number - 1) * self.per_page
- top = bottom + self.per_page
- if top + self.orphans >= self.count:
- top = self.count
- if top < self.count:
- top += 1
- return self._get_page(self.object_list[bottom:top], number, self)
|