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()
|
|
|
|
|
|
2025-10-30 20:51:24 -07:00
|
|
|
# the system user does not get added to the list of Users.
|
|
|
|
|
app.db.save(schema.User(name="__system__"))
|
|
|
|
|
|
2025-10-12 15:36:38 -07:00
|
|
|
# create the top-level pages
|
2025-10-29 19:06:57 -07:00
|
|
|
root = app.db.save(schema.Page(name=app.config.VIEW_URI, body=b"This is the home page", uri=""))
|
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])
|