From 48cff6ef2bed853f7fe889eeef6e61a25357bee5 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Thu, 8 Sep 2022 19:11:11 +0200 Subject: [PATCH] =?UTF-8?q?Overview:=20Zakl=C3=A1d=C3=A1n=C3=AD=20sout?= =?UTF-8?q?=C4=9B=C5=BE=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Viz #282. --- mo/web/org.py | 10 +++++++++- mo/web/org_round.py | 18 ++++++++++++++++++ mo/web/templates/org_index.html | 8 +++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/mo/web/org.py b/mo/web/org.py index 1cdf8c0f..377f6ab3 100644 --- a/mo/web/org.py +++ b/mo/web/org.py @@ -11,6 +11,7 @@ import mo.rights import mo.users from mo.web import app from mo.web.jinja import user_url +import mo.web.org_round from mo.web.table import Table, Row, Column @@ -103,7 +104,14 @@ def org_index(): get_stats(overview) overview = filter_overview(overview) - return render_template('org_index.html', overview=overview, role_type_names=db.role_type_names) + form_add_contest = mo.web.org_round.AddContestForm() + + return render_template( + 'org_index.html', + overview=overview, + role_type_names=db.role_type_names, + form_add_contest=form_add_contest, + ) def get_stats(overview: List[OrgOverview]) -> None: diff --git a/mo/web/org_round.py b/mo/web/org_round.py index ff7c7519..fec02c95 100644 --- a/mo/web/org_round.py +++ b/mo/web/org_round.py @@ -81,6 +81,7 @@ def delete_task(round_id: int, form: TaskDeleteForm) -> bool: return False +# Používá se i přehledu soutěží na orgovské hlavní stránce class AddContestForm(FlaskForm): place = mo_fields.Place('Nová soutěž v oblasti:', validators=[validators.DataRequired()]) create_contest = wtforms.SubmitField('Založit') @@ -702,3 +703,20 @@ def org_round_create_contests(round_id: int): form=form, num_new_places=len(new_places), ) + + +# Používá se v zakládacím tlačítku v přehledu soutěží na orgovské hlavní stránce +@app.route('/org/contests/r/<int:round_id>/create-contest', methods=('POST',)) +def org_round_create_contest(round_id: int): + sess = db.get_session() + ctx = get_context(round_id=round_id) + + form_add_contest = AddContestForm() + if not add_contest(ctx.round, form_add_contest): + return redirect(url_for('org_index')) + + # Je jednodušší soutěž znovu najít, než se ji snažit vydolovat z mechanismu + # zakládání soutěží v dělených kolech. + contest = sess.query(db.Contest).filter_by(round=ctx.round, place=form_add_contest.place.place).first() + assert contest is not None + return redirect(ctx.url_for('org_contest', ct_id=contest.contest_id)) diff --git a/mo/web/templates/org_index.html b/mo/web/templates/org_index.html index 75bf0405..a5962c43 100644 --- a/mo/web/templates/org_index.html +++ b/mo/web/templates/org_index.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% import "bootstrap/wtf.html" as wtf %} {% block title %}Přístup pro organizátory{% endblock %} {% block body %} @@ -61,7 +62,12 @@ {% endif %} <td>{% for r in o.role_list %}{{ role_type_names[r] }}{% if not loop.last %}<br>{% endif %}{% endfor %} {% if create %} - <td><a class="btn btn-xs btn-success" href='{{ detail_url }}'>Založit</a> + <td> + <form action="{{ url_for('org_round_create_contest', round_id=o.round.round_id) }}" method="POST" class="form-inline"> + {{ form_add_contest.csrf_token() }} + <input name="place" type=hidden value="{{ o.place.get_code() }}"> + <input class="btn btn-xs btn-success" name="create_contest" type="submit" value="Založit"> + </form> {% else %} <td><a class="btn btn-xs btn-primary" href='{{ detail_url }}'>Detail</a> {% endif %} -- GitLab