vtt/src/ttfrog/bootstrap.py

72 lines
1.8 KiB
Python
Raw Normal View History

2025-10-12 15:36:38 -07:00
from ttfrog import app, schema
TEMPLATE = """
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
***
Normal text.
**Bold text.**
*Italic Text.*
[A link](/).
1. a
2. numbered
3. list.
> a block quote
| A | Table | Section |
| --- | ----- | ------- |
| foo | bar | baz |
"""
def bootstrap():
"""
Bootstrap the database entries by populating the first Page, the Admin user and the Admins group.
"""
app.check_state()
# create the top-level pages
2025-10-18 17:26:21 -07:00
root = app.db.save(schema.Page(name=app.config.VIEW_URI, body=b"This is the home page"))
2025-10-12 15:36:38 -07:00
2025-10-18 17:26:21 -07:00
users = root.add_member(schema.Page(name="User", body=b"# Users\nusers go here."))
groups = root.add_member(schema.Page(name="Group", body=b"# Groups\ngroups go here."))
npcs = root.add_member(schema.Page(name="NPC", body=b"# NPCS!"))
wiki = root.add_member(schema.Page(name="Wiki", body=TEMPLATE.encode()))
2025-10-12 15:36:38 -07:00
# create the NPCs
npcs.add_member(schema.NPC(name="Sabetha", body=""))
npcs.add_member(schema.NPC(name="John", body=""))
# create the users
2025-10-18 17:26:21 -07:00
guest = users.add_member(schema.User(name="guest", body=b"# guest"))
2025-10-12 15:36:38 -07:00
admin = users.add_member(
2025-10-18 17:26:21 -07:00
schema.User(name=app.config.ADMIN_USERNAME, password="fnord", email=app.config.ADMIN_EMAIL, body=b"# fnord")
2025-10-12 15:36:38 -07:00
)
# create the admin user and admins group
2025-10-18 17:26:21 -07:00
admins = groups.add_member(schema.Group(name="administrators", members=[admin], body=b"# administrators"))
2025-10-12 15:36:38 -07:00
# admins get full access
root.set_permissions(
admins, permissions=[schema.Permissions.READ, schema.Permissions.WRITE, schema.Permissions.DELETE]
)
# guests get read access by default, except on Groups and Users
groups.set_permissions(guest, permissions=[])
users.set_permissions(guest, permissions=[])
root.set_permissions(guest, permissions=[schema.Permissions.READ])