aboutsummaryrefslogtreecommitdiffstats
path: root/pysite
diff options
context:
space:
mode:
authorGravatar Joseph <[email protected]>2018-04-18 00:14:06 +0100
committerGravatar Joseph <[email protected]>2018-04-18 00:14:06 +0100
commit9e36e3d58c56e5ebb30242497e13d2e8ca82de1f (patch)
tree6cca173e7603b54787353cd56427df63c66b5e0d /pysite
parentFix sidebar routes (diff)
Pass `can_edit` into history templates
Diffstat (limited to 'pysite')
-rw-r--r--pysite/views/wiki/history/compare.py20
-rw-r--r--pysite/views/wiki/history/show.py15
2 files changed, 34 insertions, 1 deletions
diff --git a/pysite/views/wiki/history/compare.py b/pysite/views/wiki/history/compare.py
index ff83dc35..d42a6b36 100644
--- a/pysite/views/wiki/history/compare.py
+++ b/pysite/views/wiki/history/compare.py
@@ -7,6 +7,7 @@ from pygments.lexers import DiffLexer
from werkzeug.exceptions import BadRequest, NotFound
from pysite.base_route import RouteView
+from pysite.constants import DEBUG_MODE, EDITOR_ROLES
from pysite.mixins import DBMixin
@@ -48,4 +49,21 @@ class CompareView(RouteView, DBMixin):
diff = difflib.unified_diff(before_text, after_text, fromfile=f"{first_rev}.rst", tofile=f"{second_rev}.rst")
diff = "".join(diff)
diff = highlight(diff, DiffLexer(), HtmlFormatter())
- return self.render("wiki/compare_revision.html", title=after["post"]["title"], diff=diff, slug=before["slug"])
+ return self.render("wiki/compare_revision.html",
+ title=after["post"]["title"],
+ diff=diff, slug=before["slug"],
+ can_edit=self.is_staff())
+
+ def is_staff(self):
+ if DEBUG_MODE:
+ return True
+ if not self.logged_in:
+ return False
+
+ roles = self.user_data.get("roles", [])
+
+ for role in roles:
+ if role in EDITOR_ROLES:
+ return True
+
+ return False
diff --git a/pysite/views/wiki/history/show.py b/pysite/views/wiki/history/show.py
index 9580816f..bbe2466d 100644
--- a/pysite/views/wiki/history/show.py
+++ b/pysite/views/wiki/history/show.py
@@ -4,6 +4,7 @@ import datetime
from werkzeug.exceptions import NotFound
from pysite.base_route import RouteView
+from pysite.constants import DEBUG_MODE, EDITOR_ROLES
from pysite.mixins import DBMixin
@@ -25,3 +26,17 @@ class RevisionsListView(RouteView, DBMixin):
results = sorted(results, key=lambda revision: revision["date"], reverse=True)
return self.render("wiki/revision_list.html", page=page, revisions=results), 200
+
+ def is_staff(self):
+ if DEBUG_MODE:
+ return True
+ if not self.logged_in:
+ return False
+
+ roles = self.user_data.get("roles", [])
+
+ for role in roles:
+ if role in EDITOR_ROLES:
+ return True
+
+ return False