vtt/src/ttfrog/schema.py

35 lines
950 B
Python
Raw Normal View History

2025-09-28 14:14:16 -07:00
from grung.types import Collection, Field, Record, Pointer
2025-09-24 01:28:23 -07:00
class User(Record):
2025-09-28 14:14:16 -07:00
@classmethod
def fields(cls):
return [*super().fields(), Field("name"), Field("email", unique=True)]
2025-09-24 22:03:30 -07:00
class Group(Record):
2025-09-28 14:14:16 -07:00
@classmethod
def fields(cls):
return [*super().fields(), Field("name", unique=True), Collection("users", User)]
class Page(Record):
2025-09-28 14:14:16 -07:00
@classmethod
def fields(cls):
return [
*super().fields(),
Field("stub", unique=True),
Field("title"),
Field("body"),
Pointer("parent", value_type=Page),
Collection("pages", Page),
]
def before_insert(self):
if not self.stub and not self.title:
raise Exception("Must provide either a stub or a title!")
if not self.stub:
self.stub = self.title.title().replace(" ", "")
if not self.title:
self.title = self.stub.title()