Switch from custom pagination to django.core.paginator, since it can do things like counts and 'is there a next page' more easily
This commit is contained in:
parent
2d2159ee58
commit
2a65644813
5 changed files with 26 additions and 38 deletions
|
@ -4,6 +4,6 @@ from . import views
|
|||
|
||||
app_name = 'home'
|
||||
urlpatterns = [
|
||||
url(r'^(?:before/(?P<before>\d+))?$', views.index, name='index'),
|
||||
url(r'^(?:page/(?P<page>\d+))?$', views.index, name='index'),
|
||||
url(r'^robots.txt$', views.robots, name='robots.txt'),
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from annoying.decorators import render_to
|
||||
from django.core.paginator import Paginator
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.urls import reverse
|
||||
from users.models import User
|
||||
from urllib.parse import urljoin
|
||||
|
@ -12,22 +13,20 @@ breadcrumbs.add('home:index', 'home')
|
|||
|
||||
|
||||
@render_to('home/index.html')
|
||||
def index(request, before=None):
|
||||
def index(request, page):
|
||||
query = User.objects.prefetch_related('entries', 'profiles', 'keys')
|
||||
user = get_object_or_404(query, pk=1)
|
||||
entries = user.entries.filter(kind__in=kinds.on_home)
|
||||
if before:
|
||||
entries = entries.filter(id__lt=before)
|
||||
entries = entries[:10]
|
||||
paginator = Paginator(user.entries.filter(kind__in=kinds.on_home), 10)
|
||||
|
||||
next = None
|
||||
if entries:
|
||||
next = reverse('home:index', kwargs={'before': entries.last().id})
|
||||
# If we explicitly got /page/1 in the URL then redirect to the version with
|
||||
# no page suffix.
|
||||
if page == '1':
|
||||
return redirect('home:index', permanent=True)
|
||||
entries = paginator.page(page or 1)
|
||||
|
||||
return {
|
||||
'user': user,
|
||||
'entries': entries,
|
||||
'next': next,
|
||||
'atom': 'entries:atom',
|
||||
'rss': 'entries:rss',
|
||||
'meta': user.as_meta(request),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue