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
root = app.db.save(schema.Page(name=app.config.VIEW_URI, title="Home", body="This is the home page"))
users = root.add_member(schema.Page(name="User", title="Users", body="users go here."))
groups = root.add_member(schema.Page(name="Group", title="Groups", body="groups go here."))
npcs = root.add_member(schema.Page(name="NPC", title="NPCS!", body="NPCS!"))
wiki = root.add_member(schema.Page(name="Wiki", title="Wiki", body=TEMPLATE))
# create the NPCs
npcs.add_member(schema.NPC(name="Sabetha", body=""))
npcs.add_member(schema.NPC(name="John", body=""))
# create the users
guest = users.add_member(schema.User(name="guest"))
admin = users.add_member(
schema.User(name=app.config.ADMIN_USERNAME, password="fnord", email=app.config.ADMIN_EMAIL)
)
# create the admin user and admins group
admins = groups.add_member(schema.Group(name="administrators", members=[admin]))
# 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])