Refactor the 'entries' views into a package rather than just one module, so more views can be added without clutter

This commit is contained in:
Danielle McLean 2018-03-07 15:46:21 +11:00
parent cf0aea4f73
commit c359b7640e
Signed by: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
5 changed files with 36 additions and 32 deletions

44
entries/views/lists.py Normal file
View file

@ -0,0 +1,44 @@
from annoying.decorators import render_to
from django.shortcuts import get_object_or_404
from django.urls import reverse
from ..models import Entry, Cat
from ..pagination import paginate
@render_to('entries/index.html')
def by_kind(request, kind, page):
def url(page):
kwargs = {'page': page} if page > 1 else {}
return reverse('entries:' + kind.index, kwargs=kwargs)
entries = Entry.objects.filter(kind=kind.id)
entries = paginate(queryset=entries, reverse=url, page=page)
if hasattr(entries, 'content'):
return entries
return {
'entries': entries,
'atom': 'entries:' + kind.atom,
'rss': 'entries:' + kind.rss,
'title': kind.plural,
}
@render_to('entries/index.html')
def by_cat(request, slug, page):
def url(page):
kwargs = {'slug': slug}
if page > 1:
kwargs['page'] = page
return reverse('entries:cat', kwargs=kwargs)
cat = get_object_or_404(Cat, slug=slug)
entries = cat.entries.all()
entries = paginate(queryset=entries, reverse=url, page=page)
if hasattr(entries, 'content'):
return entries
return {
'entries': entries,
'title': '#' + cat.name,
}