86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
from enum import StrEnum
|
|
from django.utils.translation import gettext,gettext_lazy,gettext_noop as _
|
|
|
|
class WikiContentType(StrEnum):
|
|
MARKDOWN = "markdown"
|
|
BBCODE = "bbcode"
|
|
|
|
@property
|
|
def str_raw(self)->str:
|
|
mapping = {
|
|
WikiContentType.MARKDOWN: _("Markdown"),
|
|
WikiContentType.BBCODE: _("BBCode")
|
|
}
|
|
return mapping[self]
|
|
|
|
@staticmethod
|
|
def from_string(string:str)->"WikiContentType":
|
|
mapping = {
|
|
WikiContentType.MARKDOWN.value: WikiContentType.MARKDOWN,
|
|
WikiContentType.BBCODE.value: WikiContentType.BBCODE,
|
|
}
|
|
return mapping[string.lower()]
|
|
|
|
@property
|
|
def str_lazy(self)->str:
|
|
return gettext_lazy(self.str_raw)
|
|
|
|
@property
|
|
def str(self)->str:
|
|
return gettext(self.str_raw)
|
|
|
|
def __str__(self):
|
|
return self.str
|
|
|
|
def __repr__(self):
|
|
return f"<{self.__qualname__}: {self.value.upper()}>"
|
|
|
|
WIKI_CONTENT_TYPES = (
|
|
WikiContentType.MARKDOWN,
|
|
WikiContentType.BBCODE,
|
|
)
|
|
|
|
class WikiPageStatus(StrEnum):
|
|
IN_PROGRESS = "in_progress"
|
|
DRAFT = "draft"
|
|
PUBLISHED = "published"
|
|
|
|
@staticmethod
|
|
def from_string(string:str)->"WikiPageStatus":
|
|
mapping = {
|
|
WikiPageStatus.IN_PROGRESS.value: WikiPageStatus.IN_PROGRESS,
|
|
WikiPageStatus.DRAFT.value: WikiPageStatus.DRAFT,
|
|
WikiPageStatus.PUBLISHED: WikiPageStatus.PUBLISHED,
|
|
}
|
|
return mapping[string.lower()]
|
|
|
|
@property
|
|
def str_raw(self)->str:
|
|
mapping = {
|
|
WikiPageStatus.IN_PROGRESS: _("in progress"),
|
|
WikiPageStatus.DRAFT: _("draft"),
|
|
WikiPageStatus.PUBLISHED: _("published"),
|
|
}
|
|
return mapping[self]
|
|
|
|
|
|
|
|
@property
|
|
def str_lazy(self)->str:
|
|
return gettext_lazy(self.str_raw)
|
|
|
|
@property
|
|
def str(self)->str:
|
|
return gettext(self.str_raw)
|
|
|
|
def __str__(self):
|
|
return self.str
|
|
|
|
def __repr__(self):
|
|
return f"<{self.__qualname__}: {self.value.upper()}>"
|
|
|
|
WIKI_PAGE_STATUS = (
|
|
WikiPageStatus.IN_PROGRESS,
|
|
WikiPageStatus.DRAFT,
|
|
WikiPageStatus.PUBLISHED,
|
|
) |