aboutsummaryrefslogtreecommitdiffstats
path: root/pysite
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-04-07 15:02:35 +0100
committerGravatar Gareth Coles <[email protected]>2018-04-07 15:02:35 +0100
commitc4e683fff11c3c1bd33c95c1f741eb0c76fd99b2 (patch)
treee3abdf698a0f7e3e58a5df129ca7f90ba16f0541 /pysite
parentFix stupid error (diff)
Considerable progress on the wiki
Diffstat (limited to 'pysite')
-rw-r--r--pysite/views/wiki/edit.py25
-rw-r--r--pysite/views/wiki/page.py3
2 files changed, 19 insertions, 9 deletions
diff --git a/pysite/views/wiki/edit.py b/pysite/views/wiki/edit.py
index 1a100b8b..4a87044c 100644
--- a/pysite/views/wiki/edit.py
+++ b/pysite/views/wiki/edit.py
@@ -1,5 +1,6 @@
# coding=utf-8
-from flask import url_for
+from docutils.core import publish_parts
+from flask import request, url_for
from werkzeug.utils import redirect
from pysite.base_route import RouteView
@@ -31,12 +32,20 @@ class EditView(RouteView, DBMixin):
@require_roles(*ALL_STAFF_ROLES)
@csrf
def post(self, page):
- # rst = request.form["rst"]
- # obj = {
- # "slug": page,
- # "title": request.form["title"],
- # "rst": request.form["rst"],
- # "html": ""
- # }
+ rst = request.form["rst"]
+ obj = {
+ "slug": page,
+ "title": request.form["title"],
+ "rst": rst,
+ "html": publish_parts(
+ source=rst, writer_name="html5", settings_overrides={"halt_level": 2}
+ )["html_body"]
+ }
+
+ self.db.insert(
+ self.table_name,
+ obj,
+ conflict="replace"
+ )
return redirect(url_for("wiki.page", page=page), code=303) # Redirect, ensuring a GET
diff --git a/pysite/views/wiki/page.py b/pysite/views/wiki/page.py
index 01c8fa8a..66afd283 100644
--- a/pysite/views/wiki/page.py
+++ b/pysite/views/wiki/page.py
@@ -1,5 +1,6 @@
# coding=utf-8
from flask import redirect, url_for
+from werkzeug.exceptions import NotFound
from pysite.base_route import RouteView
from pysite.constants import ALL_STAFF_ROLES
@@ -20,7 +21,7 @@ class PageView(RouteView, DBMixin):
if self.is_staff():
return redirect(url_for("wiki.edit", page=page))
- return self.render("wiki/page_missing.html", page=page)
+ raise NotFound()
return self.render("wiki/page_view.html", page=page, data=obj)
def is_staff(self):