forked from 00dani/lemoncurry
88 lines
1.6 KiB
Python
88 lines
1.6 KiB
Python
from django.urls import reverse
|
|
|
|
|
|
class Entry:
|
|
def __init__(self, id, plural, icon, on_home=True, slug=False):
|
|
self.id = id
|
|
self.plural = plural
|
|
self.icon = icon
|
|
self.on_home = on_home
|
|
self.slug = slug
|
|
|
|
@property
|
|
def index(self):
|
|
return self.index_page()
|
|
|
|
def index_page(self, page=0):
|
|
kwargs = {"kind": self}
|
|
if page > 1:
|
|
kwargs["page"] = page
|
|
return reverse("entries:index", kwargs=kwargs)
|
|
|
|
@property
|
|
def entry(self):
|
|
return self.plural + "_entry"
|
|
|
|
@property
|
|
def atom(self):
|
|
return reverse("entries:atom_by_kind", kwargs={"kind": self})
|
|
|
|
@property
|
|
def rss(self):
|
|
return reverse("entries:rss_by_kind", kwargs={"kind": self})
|
|
|
|
|
|
Note = Entry(
|
|
id="note",
|
|
icon="fas fa-paper-plane",
|
|
plural="notes",
|
|
)
|
|
|
|
|
|
Article = Entry(
|
|
id="article",
|
|
icon="fas fa-file-alt",
|
|
plural="articles",
|
|
slug=True,
|
|
)
|
|
|
|
Photo = Entry(
|
|
id="photo",
|
|
icon="fas fa-camera",
|
|
plural="photos",
|
|
)
|
|
|
|
Reply = Entry(
|
|
id="reply",
|
|
icon="fas fa-comment",
|
|
plural="replies",
|
|
on_home=False,
|
|
)
|
|
|
|
Like = Entry(
|
|
id="like",
|
|
icon="fas fa-heart",
|
|
plural="likes",
|
|
on_home=False,
|
|
)
|
|
|
|
Repost = Entry(
|
|
id="repost",
|
|
icon="fas fa-retweet",
|
|
plural="reposts",
|
|
)
|
|
|
|
all = (Note, Article, Photo)
|
|
on_home = {k.id for k in all if k.on_home}
|
|
from_id = {k.id: k for k in all}
|
|
from_plural = {k.plural: k for k in all}
|
|
|
|
|
|
class EntryKindConverter:
|
|
regex = "|".join(k.plural for k in all)
|
|
|
|
def to_python(self, plural):
|
|
return from_plural[plural]
|
|
|
|
def to_url(self, k):
|
|
return k.plural
|