From 41b611026fec05d132167e9293789e49b8bc196a Mon Sep 17 00:00:00 2001
From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Date: Tue, 21 Sep 2021 20:10:14 +0200
Subject: [PATCH] =?UTF-8?q?ParticipantsFilterForm=20nepou=C5=BEiv=C3=A1=20?=
 =?UTF-8?q?f=5F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/web/org_contest.py | 29 +++++------------------------
 mo/web/org_round.py   |  8 ++++----
 2 files changed, 9 insertions(+), 28 deletions(-)

diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 3dc241b7..0a17429c 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -59,26 +59,6 @@ class ParticipantsFilterForm(PagerForm):
     download_csv = wtforms.SubmitField("↓ CSV")
     download_tsv = wtforms.SubmitField("↓ TSV")
 
-    # Výstupní hodnoty filtru, None při nepoužitém filtru, prázdná db hodnota při
-    # nepovedené filtraci (neexistující místo a podobně)
-    f_school: Optional[db.Place] = None
-    f_participation_place: Optional[db.Place] = None
-    f_contest_place: Optional[db.Place] = None
-    f_participation_state: Optional[db.PartState] = None
-
-    def validate_school(self, field):
-        self.f_school = field.place
-
-    def validate_participation_place(self, field):
-        self.f_participation_place = field.place
-
-    def validate_contest_place(self, field):
-        self.f_contest_place = field.place
-
-    def validate_participation_state(self, field):
-        self.f_participation_state = None if field.data == '*' else field.data
-
-
 class ParticipantsActionForm(FlaskForm):
     action_on = wtforms.RadioField(
         "Provést akci na", validators=[validators.DataRequired()],
@@ -442,12 +422,13 @@ def org_contest_list(id: int, site_id: Optional[int] = None):
     filter = ParticipantsFilterForm(formdata=request.args)
     if request.args:
         filter.validate()
+
     query = get_contestants_query(
         round=master_contest.round, contest=master_contest, site=site,
-        school=filter.f_school,
-        # contest_place=filter.f_contest_place,
-        participation_place=filter.f_participation_place,
-        participation_state=filter.f_participation_state,
+        school=filter.school.place,
+        contest_place=filter.contest_place.place,
+        participation_place=filter.participation_place.place,
+        participation_state=mo.util.star_is_none(filter.participation_state.data),
     )
 
     action_form = None
diff --git a/mo/web/org_round.py b/mo/web/org_round.py
index 94e4aaca..88da8505 100644
--- a/mo/web/org_round.py
+++ b/mo/web/org_round.py
@@ -373,10 +373,10 @@ def org_round_list(id: int):
     filter.validate()
     query = get_contestants_query(
         round=master_round,
-        school=filter.f_school,
-        contest_place=filter.f_contest_place,
-        participation_place=filter.f_participation_place,
-        participation_state=filter.f_participation_state,
+        school=filter.school.place,
+        contest_place=filter.contest_place.place,
+        participation_place=filter.participation_place.place,
+        participation_state=mo.util.star_is_none(filter.participation_state.data),
     )
 
     action_form = None
-- 
GitLab