aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/wiki/edit.py
blob: 1a100b8b9e45226d26edf927125d3bd82cf00aef (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
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