paginator.py 935 B

12345678910111213141516171819202122232425262728
  1. from django.core.paginator import Paginator
  2. class PostsPaginator(Paginator):
  3. """
  4. Paginator that returns that makes last item on page
  5. repeat as first item on next page.
  6. """
  7. def __init__(self, object_list, per_page, orphans=0,
  8. allow_empty_first_page=True):
  9. per_page = int(per_page) - 1
  10. if orphans:
  11. orphans += 1
  12. super(PostsPaginator, self).__init__(
  13. object_list, per_page, orphans, allow_empty_first_page)
  14. def page(self, number):
  15. """
  16. Returns a Page object for the given 1-based page number.
  17. """
  18. number = self.validate_number(number)
  19. bottom = (number - 1) * self.per_page
  20. top = bottom + self.per_page
  21. if top + self.orphans >= self.count:
  22. top = self.count
  23. if top < self.count:
  24. top += 1
  25. return self._get_page(self.object_list[bottom:top], number, self)