diff options
| author | 2018-05-19 21:00:34 +0100 | |
|---|---|---|
| committer | 2018-05-19 21:00:34 +0100 | |
| commit | a8fd1e4e2e2e0fb1b4496ee53c3f782e04e5918e (patch) | |
| tree | adae29203023af3d6b121e62fdc819b574d38fb2 /pysite/views | |
| parent | Linting, and remove seconds from date formatter (diff) | |
Form preamble, jam creation fixes
Diffstat (limited to 'pysite/views')
| -rw-r--r-- | pysite/views/staff/jams/create.py | 12 | ||||
| -rw-r--r-- | pysite/views/staff/jams/forms/preamble_edit.py | 45 | ||||
| -rw-r--r-- | pysite/views/staff/jams/forms/view.py | 4 | 
3 files changed, 60 insertions, 1 deletions
diff --git a/pysite/views/staff/jams/create.py b/pysite/views/staff/jams/create.py index e88056c5..ef61cbef 100644 --- a/pysite/views/staff/jams/create.py +++ b/pysite/views/staff/jams/create.py @@ -1,3 +1,5 @@ +import datetime +  from flask import redirect, request, url_for  from werkzeug.exceptions import BadRequest @@ -35,6 +37,16 @@ class StaffView(RouteView, DBMixin):          data["state"] = "planning"          data["number"] = self.get_next_number() +        # Convert given datetime strings into actual objects, adding timezones to keep rethinkdb happy +        date_start = datetime.datetime.strptime(data["date_start"], "%Y-%m-%d %H:%M") +        date_start = date_start.replace(tzinfo=datetime.timezone.utc) + +        date_end = datetime.datetime.strptime(data["date_end"], "%Y-%m-%d %H:%M") +        date_end = date_end.replace(tzinfo=datetime.timezone.utc) + +        data["date_start"] = date_start +        data["date_end"] = date_end +          self.db.insert(self.table_name, data)          return redirect(url_for("staff.jams.index")) diff --git a/pysite/views/staff/jams/forms/preamble_edit.py b/pysite/views/staff/jams/forms/preamble_edit.py new file mode 100644 index 00000000..c17692d3 --- /dev/null +++ b/pysite/views/staff/jams/forms/preamble_edit.py @@ -0,0 +1,45 @@ +import datetime + +from flask import redirect, request, url_for +from werkzeug.exceptions import BadRequest, NotFound + +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 +from pysite.rst import render + + +class StaffView(RouteView, DBMixin): +    path = "/jams/form/<int:jam>/preamble" +    name = "jams.forms.preamble.edit" + +    table_name = "code_jam_forms" +    jams_table = "code_jams" + +    @require_roles(*ALL_STAFF_ROLES) +    def get(self, jam): +        jam_obj = self.db.get(self.jams_table, jam) + +        if not jam_obj: +            return NotFound() + +        form_obj = self.db.get(self.table_name, jam) +        return self.render("staff/jams/forms/preamble_edit.html", jam=jam_obj, form=form_obj) + +    @require_roles(*ALL_STAFF_ROLES) +    @csrf +    def post(self, jam): +        jam_obj = self.db.get(self.table_name, jam) + +        if not jam_obj: +            return NotFound() + +        form_obj = self.db.get(self.table_name, jam) + +        preamble_rst = request.form.get("preamble_rst") + +        form_obj["preamble_rst"] = preamble_rst +        form_obj["preamble_html"] = render(preamble_rst, link_headers=False)["html"] + +        return redirect(url_for("staff.jams.forms.view", jam=jam)) diff --git a/pysite/views/staff/jams/forms/view.py b/pysite/views/staff/jams/forms/view.py index eaa910f2..8d4e16ad 100644 --- a/pysite/views/staff/jams/forms/view.py +++ b/pysite/views/staff/jams/forms/view.py @@ -28,7 +28,9 @@ class StaffView(RouteView, DBMixin):          if not form_obj:              form_obj = {                  "number": jam, -                "questions": [] +                "questions": [], +                "preamble_rst": "", +                "preamble_html": ""              }              self.db.insert(self.forms_table, form_obj)  |