paginator.py 888 B

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