forked from 00dani/lemoncurry
Enable simple entry pagination - each h-feed page has a rel=next pointing to the next page of the feed, but there's no visible link yet
This commit is contained in:
parent
ea241577f1
commit
2d2159ee58
5 changed files with 44 additions and 8 deletions
|
@ -11,20 +11,24 @@ def prefix(route):
|
|||
return app_name + ':' + route
|
||||
|
||||
|
||||
before = '(?:/before/(?P<before>\d+))?'
|
||||
slug = r'/(?P<slug>[^/]+)'
|
||||
|
||||
app_name = 'entries'
|
||||
urlpatterns = [
|
||||
url('^atom$', feeds.AtomHomeEntries(), name='atom'),
|
||||
url('^rss$', feeds.RssHomeEntries(), name='rss'),
|
||||
url('^cats/(?P<slug>.+)$', views.cat, name='cat'),
|
||||
url(to_pat('cats', slug, before), views.cat, name='cat'),
|
||||
]
|
||||
crumbs.add(prefix('cat'), parent='home:index')
|
||||
|
||||
slug = '(?:' + slug + ')?'
|
||||
|
||||
for k in kinds.all:
|
||||
kind = k.plural
|
||||
id = r'/(?P<id>\d+)'
|
||||
slug = r'(?:/(?P<slug>.+))?'
|
||||
urlpatterns += (
|
||||
url(to_pat(kind), views.index, name=k.index, kwargs={'kind': k}),
|
||||
url(to_pat(kind, before), views.index, name=k.index, kwargs={'kind': k}),
|
||||
url(to_pat(kind, '/atom'), feeds.AtomByKind(k), name=k.atom),
|
||||
url(to_pat(kind, '/rss'), feeds.RssByKind(k), name=k.rss),
|
||||
url(to_pat(kind, id, slug), views.entry, name=k.entry),
|
||||
|
|
|
@ -1,13 +1,24 @@
|
|||
from annoying.decorators import render_to
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.urls import reverse
|
||||
from .models import Entry, Cat
|
||||
|
||||
|
||||
@render_to('entries/index.html')
|
||||
def index(request, kind):
|
||||
def index(request, kind, before=None):
|
||||
entries = Entry.objects.filter(kind=kind.id)
|
||||
if before:
|
||||
entries = entries.filter(id__lt=before)
|
||||
entries = entries[:10]
|
||||
|
||||
next = None
|
||||
if entries:
|
||||
last = entries.last().id
|
||||
next = reverse('entries:' + kind.index, kwargs={'before': last})
|
||||
|
||||
return {
|
||||
'entries': entries,
|
||||
'next': next,
|
||||
'atom': 'entries:' + kind.atom,
|
||||
'rss': 'entries:' + kind.rss,
|
||||
'title': kind.plural,
|
||||
|
@ -15,10 +26,22 @@ def index(request, kind):
|
|||
|
||||
|
||||
@render_to('entries/index.html')
|
||||
def cat(request, slug):
|
||||
def cat(request, slug, before=None):
|
||||
cat = get_object_or_404(Cat, slug=slug)
|
||||
entries = cat.entries.all()
|
||||
if before:
|
||||
entries = entries.filter(id__lt=before)
|
||||
entries = entries[:10]
|
||||
|
||||
next = None
|
||||
if entries:
|
||||
next = reverse('entries:cat', kwargs={
|
||||
'slug': slug,
|
||||
'before': entries.last().id
|
||||
})
|
||||
return {
|
||||
'entries': cat.entries.all(),
|
||||
'entries': entries,
|
||||
'next': next,
|
||||
'title': '#' + cat.name,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue