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() # the system user does not get added to the list of Users. app.db.save(schema.User(name="__system__")) # 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])