1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 21:44:21 +00:00
royalnet/royalpack/tables/wikipages.py

55 lines
1.3 KiB
Python

from sqlalchemy import Column, \
Text, \
String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declared_attr
from royalnet.utils import to_urluuid
class WikiPage:
"""Wiki page properties.
Warning:
Requires PostgreSQL!"""
__tablename__ = "wikipages"
@declared_attr
def page_id(self):
return Column(UUID(as_uuid=True), primary_key=True)
@declared_attr
def title(self):
return Column(String, nullable=False)
@declared_attr
def contents(self):
return Column(Text)
@declared_attr
def format(self):
return Column(String, nullable=False, default="markdown")
@declared_attr
def theme(self):
return Column(String)
@property
def page_short_id(self):
return to_urluuid(self.page_id)
def json_list(self) -> dict:
return {
"page_id": str(self.page_id),
"page_short_id": self.page_short_id,
"title": self.title
}
def json_full(self) -> dict:
return {
"page_id": str(self.page_id),
"page_short_id": self.page_short_id,
"title": self.title,
"contents": self.contents,
"format": self.format,
"theme": self.theme,
}