paginator.py 670 B

123456789101112131415161718192021
  1. from math import floor, ceil
  2. from django.core.paginator import Paginator
  3. from django.utils.functional import cached_property
  4. class PostsPaginator(Paginator):
  5. """
  6. Paginator that returns that makes last item on page
  7. repeat as first item on next page.
  8. """
  9. def page(self, number):
  10. """
  11. Returns a Page object for the given 1-based page number.
  12. """
  13. number = self.validate_number(number)
  14. bottom = (number - 1) * self.per_page
  15. top = bottom + self.per_page + 1
  16. if top + self.orphans >= self.count:
  17. top = self.count
  18. return self._get_page(self.object_list[bottom:top], number, self)