From bed79af58559cf1690c7b4919ede0393f6e9ea04 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Mon, 12 Apr 2021 17:06:22 +0200 Subject: [PATCH] =?UTF-8?q?Dokud=20neexistuj=C3=AD=20=C5=BE=C3=A1dn=C3=A9?= =?UTF-8?q?=20=C3=BAlohy,=20kolo=20nesm=C3=AD=20opustit=20stav=20"p=C5=99i?= =?UTF-8?q?pravuje=20se"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #198. --- mo/web/org_round.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mo/web/org_round.py b/mo/web/org_round.py index c0c69847..5966b90a 100644 --- a/mo/web/org_round.py +++ b/mo/web/org_round.py @@ -416,6 +416,8 @@ class MODateTimeField(wtforms.DateTimeField): class RoundEditForm(FlaskForm): + _for_round: Optional[db.Round] = None + name = wtforms.StringField("Název", render_kw={'autofocus': True}) state = wtforms.SelectField( "Stav kola", choices=db.RoundState.choices(), coerce=db.RoundState.coerce, @@ -445,8 +447,13 @@ class RoundEditForm(FlaskForm): submit = wtforms.SubmitField('Uložit') def validate_state(self, field): - if field.data != db.RoundState.preparing and self.ct_tasks_start.data is None: - raise ValidationError('Není-li nastaven času začátku soutěže, stav musí být "připravuje se"') + if field.data != db.RoundState.preparing: + if self.ct_tasks_start.data is None: + raise ValidationError('Není-li nastaven času začátku soutěže, stav musí být "připravuje se"') + if self._for_round is not None: + num_tasks = db.get_session().query(db.Task).filter_by(round=self._for_round).count() + if num_tasks == 0: + raise ValidationError('Nejsou-li definovány žádné úlohy, stav musí být "připravuje se"') @app.route('/org/contest/r/<int:id>/edit', methods=('GET', 'POST')) @@ -455,6 +462,7 @@ def org_round_edit(id: int): round, _, rr = get_round_rr(id, Right.manage_round, True) form = RoundEditForm(obj=round) + form._for_round = round if round.is_subround(): # podkolo nemá nastavení výsledkové listiny del form.score_mode -- GitLab