Refactor the pagination logic into a reusable module so I can go add it to the other feed pages

This commit is contained in:
Danielle McLean 2017-12-15 12:25:55 +11:00
parent f9e6f1dde3
commit 4033837b91
Signed by: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
3 changed files with 45 additions and 27 deletions

33
entries/pagination.py Normal file
View file

@ -0,0 +1,33 @@
from django.core.paginator import Paginator
from django.shortcuts import redirect
def paginate(queryset, reverse, page):
class Page:
def __init__(self, i):
self.i = i
@property
def url(self):
return reverse(self.i)
@property
def current(self):
return self.i == entries.number
# If the first page was requested, redirect to the clean version of the URL
# with no page suffix.
if page == '1':
return redirect(Page(1).url)
paginator = Paginator(queryset, 10)
entries = paginator.page(page or 1)
entries.pages = tuple(Page(i) for i in paginator.page_range)
if entries.has_previous():
entries.prev = Page(entries.previous_page_number())
if entries.has_next():
entries.next = Page(entries.next_page_number())
return entries