From c4e683fff11c3c1bd33c95c1f741eb0c76fd99b2 Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Sat, 7 Apr 2018 15:02:35 +0100 Subject: Considerable progress on the wiki --- pysite/views/wiki/edit.py | 25 +++++++++----- pysite/views/wiki/page.py | 3 +- templates/main/base.html | 6 +++- templates/main/navigation.html | 10 +++--- templates/wiki/base.html | 71 ++++++++++++++++++++++++++++++++++++++++ templates/wiki/index.html | 4 +-- templates/wiki/page_edit.html | 46 +++++++++++++------------- templates/wiki/page_missing.html | 11 ------- templates/wiki/page_view.html | 12 ++++--- 9 files changed, 132 insertions(+), 56 deletions(-) create mode 100644 templates/wiki/base.html delete mode 100644 templates/wiki/page_missing.html 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): diff --git a/templates/main/base.html b/templates/main/base.html index 4978d494..6f5921d9 100644 --- a/templates/main/base.html +++ b/templates/main/base.html @@ -47,7 +47,11 @@ diff --git a/templates/main/navigation.html b/templates/main/navigation.html index eb325a37..0260b051 100644 --- a/templates/main/navigation.html +++ b/templates/main/navigation.html @@ -16,9 +16,10 @@ {% if current_page == "index" %}
  •  Home
  • {% else %} -
  •  Home
  • +
  •  Home
  • {% endif %} -
  •  Discord
  • +
  •  Wiki
  • +
  •  Discord