From cc5583dbf9a45052bb0c2412c5223a9e1690da9e Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sun, 27 Aug 2023 15:40:59 +0200
Subject: [PATCH] =?UTF-8?q?V=20seznamu=20submit=C5=AF=20je=20mo=C5=BEn?=
 =?UTF-8?q?=C3=A9=20m=C3=ADsto=20bod=C5=AF=20nastavit=20is=5Fempty?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/web/org_contest.py                 | 7 ++++++-
 mo/web/templates/org_submit_list.html | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 7c2c8198..7c8979a5 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -787,6 +787,7 @@ class SubmitForm(FlaskForm):
     note = wtforms.TextAreaField("Poznámka pro účastníka", description="Viditelná účastníkovi po uzavření kola", render_kw={'autofocus': True})
     org_note = wtforms.TextAreaField("Interní poznámka", description="Viditelná jen organizátorům")
     points = mo_fields.Points(description="Účastník po uzavření kola uvidí jen naposledy zadané body", validators=[validators.Optional()])
+    is_empty = wtforms.BooleanField("Prázdný protokol (neobsahuje řešení, není hodnocen)", default=False)
     submit = wtforms.SubmitField('Uložit')
 
     file = flask_wtf.file.FileField("Soubor")
@@ -890,6 +891,8 @@ def org_submit_list(ct_id: int, user_id: int, task_id: int, site_id: Optional[in
         if (form.submit_sol.data or form.submit_fb.data) and form.file.data is None:
             flash('Schází soubor k nahrání, žádné změny nebyly uloženy', 'danger')
             return redirect(self_url)
+        if form.is_empty.data:
+            points = 0
         if points:
             error = mo.util.check_points(points, for_task=ctx.task, for_round=ctx.round)
             if error:
@@ -919,14 +922,16 @@ def org_submit_list(ct_id: int, user_id: int, task_id: int, site_id: Optional[in
             if sess.is_modified(sol):
                 flash('Změny hodnocení uloženy', 'success')
             # Points
-            if points != sol.points:
+            if points != sol.points or form.is_empty.data != sol.is_empty:
                 sol.points = points
+                sol.is_empty = form.is_empty.data
                 sess.add(db.PointsHistory(
                     task=ctx.task,
                     participant=sol.user,
                     user=g.user,
                     points_at=mo.now,
                     points=points,
+                    is_empty=sol.is_empty,
                 ))
                 flash('Body uloženy', 'success')
             # Save changes and commit
diff --git a/mo/web/templates/org_submit_list.html b/mo/web/templates/org_submit_list.html
index 1cbedf61..36544b60 100644
--- a/mo/web/templates/org_submit_list.html
+++ b/mo/web/templates/org_submit_list.html
@@ -188,6 +188,7 @@ Existuje více než jedna verze oprav, finální je podbarvená.
 		{{ wtf.form_field(form.note, form_type='horizontal', horizontal_columns=('sm', 2, 10), rows=4)}}
 		{{ wtf.form_field(form.org_note, form_type='horizontal', horizontal_columns=('sm', 2, 10), rows=4 )}}
 		{{ wtf.form_field(form.points, form_type='horizontal', horizontal_columns=('sm', 2, 10) )}}
+		{{ wtf.form_field(form.is_empty, form_type='horizontal', horizontal_columns=('sm', 2, 10) )}}
 		{{ wtf.form_field(
 			form.submit, form_type='horizontal', class='btn btn-primary', horizontal_columns=('sm', 2, 10),
 			value=action + (' bez nahrání souboru' if allow_upload_feedback or allow_upload_solutions else '')
-- 
GitLab