diff --git a/main.py b/main.py index de9dacb..c85ec45 100755 --- a/main.py +++ b/main.py @@ -125,13 +125,27 @@ def event_page(event_id: int) -> str: return flask.render_template("event.html", item=item) -@app.route("/conference/<short_name>") -def conference_page(short_name: str) -> str: +@app.route("/conference/<short_name>", methods=["GET", "POST"]) +def conference_page(short_name: str) -> str | Response: item = model.Conference.query.filter_by(short_name=short_name).one_or_none() if item is None: flask.abort(404) + + if flask.request.method == "POST" and check_admin_mode(): + item.short_name = flask.request.form["short_name"] + item.title = flask.request.form["title"] + database.session.commit() + + assert flask.request.endpoint + return flask.redirect( + flask.url_for(flask.request.endpoint, short_name=item.short_name) + ) + return flask.render_template( - "conference.html", item=item, person_image_filename=person_image_filename + "conference.html", + item=item, + person_image_filename=person_image_filename, + is_admin=check_admin_mode, ) diff --git a/templates/conference.html b/templates/conference.html index 56fc448..3c58ea6 100644 --- a/templates/conference.html +++ b/templates/conference.html @@ -86,6 +86,21 @@ </div> </div> + {% if is_admin() %} + <form method="POST"> + <div> + <label for="title">title</label> + <input type="text" name="title" id="title" value="{{ item.title }}"> + </div> + <div> + <label for="short_name">short name</label> + <input type="text" name="short_name" id="short_name" value="{{ item.short_name }}"> + </div> + + <button type="submit" class="btn btn-primary">Submit</button> + </form> + {% endif %} + <h3>Talks</h3> <p>{{ item.events.count() }} talks</p>