aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/wiki/page.py
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-04-04 16:09:05 +0100
committerGravatar Gareth Coles <[email protected]>2018-04-04 16:09:05 +0100
commit1d1e17f7f19203d449c8641794cd2c61705fdcd2 (patch)
tree63640306e93059a181b2af04952b0403c38ef8ee /pysite/views/wiki/page.py
parentCSRF 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.py30
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