vtt/src/ttfrog/bootstrap.py

72 lines
1.8 KiB
Python

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, body=b"This is the home page", uri=""))
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()))
# 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", body=b"# guest"))
admin = users.add_member(
schema.User(name=app.config.ADMIN_USERNAME, password="fnord", email=app.config.ADMIN_EMAIL, body=b"# fnord")
)
# create the admin user and admins group
admins = groups.add_member(schema.Group(name="administrators", members=[admin], body=b"# administrators"))
# 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])