diff options
author | 2018-04-04 16:09:05 +0100 | |
---|---|---|
committer | 2018-04-04 16:09:05 +0100 | |
commit | 1d1e17f7f19203d449c8641794cd2c61705fdcd2 (patch) | |
tree | 63640306e93059a181b2af04952b0403c38ef8ee /pysite/views/wiki/page.py | |
parent | CSRF error route doesn't do shit, sadly (diff) |
Early wiki work including a WS test route for RST parsing
Diffstat (limited to 'pysite/views/wiki/page.py')
-rw-r--r-- | pysite/views/wiki/page.py | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/pysite/views/wiki/page.py b/pysite/views/wiki/page.py index 6f9f15c1..70cec002 100644 --- a/pysite/views/wiki/page.py +++ b/pysite/views/wiki/page.py @@ -1,10 +1,36 @@ # coding=utf-8 +from flask import url_for, redirect + from pysite.base_route import RouteView +from pysite.constants import ALL_STAFF_ROLES +from pysite.mixins import DBMixin -class PageView(RouteView): +class PageView(RouteView, DBMixin): path = "/wiki/<path:page>" # "path" means that it accepts slashes name = "page" + table_name = "wiki" + table_primary_key = "slug" + def get(self, page): - return self.render("wiki/index.html") + obj = self.db.get(self.table_name, page) + + if obj is None: + if self.is_staff(): + return redirect(url_for("wiki.edit", page=page)) + + return self.render("wiki/page_missing.html", page=page) + return self.render("wiki/page_view.html", page=page, data=obj) + + def is_staff(self): + if not self.logged_in: + return False + + roles = self.user_data["roles"] + + for role in roles: + if role in ALL_STAFF_ROLES: + return True + + return False |