Refactor how the routing for different kinds of entry works - this will make implementing webmentions easier, hopefully?
This commit is contained in:
parent
c359b7640e
commit
9580068c5b
12 changed files with 136 additions and 73 deletions
|
|
@ -1,4 +1,5 @@
|
|||
from django.conf.urls import url
|
||||
from django.urls import reverse
|
||||
from . import kinds
|
||||
from .views import feeds, lists, perma
|
||||
from lemoncurry import breadcrumbs as crumbs
|
||||
|
|
@ -12,29 +13,39 @@ def prefix(route):
|
|||
return app_name + ':' + route
|
||||
|
||||
|
||||
page = '(?:/page/(?P<page>\d+))?'
|
||||
id = r'/(?P<id>\d+)'
|
||||
kind = r'(?P<kind>{0})'.format('|'.join(k.plural for k in kinds.all))
|
||||
page = r'(?:/page/(?P<page>\d+))?'
|
||||
slug = r'/(?P<slug>[^/]+)'
|
||||
|
||||
slug_opt = '(?:' + slug + ')?'
|
||||
|
||||
app_name = 'entries'
|
||||
urlpatterns = [
|
||||
urlpatterns = (
|
||||
url('^atom$', feeds.AtomHomeEntries(), name='atom'),
|
||||
url('^rss$', feeds.RssHomeEntries(), name='rss'),
|
||||
url(to_pat('cats', slug, page), lists.by_cat, name='cat'),
|
||||
]
|
||||
url(to_pat(kind, page), lists.by_kind, name='index'),
|
||||
url(to_pat(kind, '/atom'), feeds.AtomByKind(), name='atom_by_kind'),
|
||||
url(to_pat(kind, '/rss'), feeds.RssByKind(), name='rss_by_kind'),
|
||||
url(to_pat(kind, id, slug_opt, '/amp'), perma.entry_amp, name='entry_amp'),
|
||||
url(to_pat(kind, id, slug_opt), perma.entry, name='entry'),
|
||||
)
|
||||
|
||||
|
||||
class IndexCrumb(crumbs.Crumb):
|
||||
def __init__(self):
|
||||
super().__init__(prefix('index'), parent='home:index')
|
||||
|
||||
@property
|
||||
def label(self):
|
||||
return self.match.kwargs['kind']
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return reverse(prefix('index'), kwargs={'kind': self.label})
|
||||
|
||||
|
||||
crumbs.add(prefix('cat'), parent='home:index')
|
||||
|
||||
slug = '(?:' + slug + ')?'
|
||||
|
||||
for k in kinds.all:
|
||||
kind = k.plural
|
||||
id = r'/(?P<id>\d+)'
|
||||
urlpatterns += (
|
||||
url(to_pat(kind, page), lists.by_kind, 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, '/amp'), perma.entry_amp, name=k.entry_amp),
|
||||
url(to_pat(kind, id, slug), perma.entry, name=k.entry),
|
||||
)
|
||||
|
||||
crumbs.add(prefix(k.index), label=k.plural, parent='home:index')
|
||||
crumbs.add(prefix(k.entry), parent=prefix(k.index))
|
||||
crumbs.add(IndexCrumb())
|
||||
crumbs.add(prefix('entry'), parent=prefix('index'))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue