diff options
Diffstat (limited to 'pysite')
| -rw-r--r-- | pysite/views/wiki/edit.py | 25 | ||||
| -rw-r--r-- | pysite/views/wiki/page.py | 3 | 
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): | 
