aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/wiki/edit.py
blob: d9ea692f4784641e05a677ea4c0ca1c4b342399c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# coding=utf-8
from flask import url_for, request
from werkzeug.utils import redirect

from pysite.base_route import RouteView
from pysite.constants import ALL_STAFF_ROLES
from pysite.decorators import csrf, require_roles
from pysite.mixins import DBMixin


class EditView(RouteView, DBMixin):
    path = "/edit/<path:page>"  # "path" means that it accepts slashes
    name = "edit"

    table_name = "wiki"
    table_primary_key = "slug"

    @require_roles(*ALL_STAFF_ROLES)
    def get(self, page):
        rst = ""
        title = ""

        obj = self.db.get(self.table_name, page)

        if obj:
            rst = obj["rst"]
            title = obj["title"]

        return self.render("wiki/page_edit.html", page=page, rst=rst, title=title)

    @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": ""
        }

        return redirect(url_for("wiki.page", page=page), code=303)  # Redirect, ensuring a GET