From bb3f78a777f43795620146b5c4bdb5e0b0464f5b Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sat, 12 Nov 2022 15:03:09 +0100
Subject: [PATCH] =?UTF-8?q?find=5For=5Fcreate=5Fparticipant=20d=C4=9Bd?=
 =?UTF-8?q?=C3=AD=20=C5=A1kolu=20a=20rok=20narozen=C3=AD=20z=20minul=C3=BD?=
 =?UTF-8?q?ch=20ro=C4=8Dn=C3=ADk=C5=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Tím pádem ani přidání účastníka do soutěže orgem, ani import účastníků
nevyžadují znovuvyplnění těchto údajů, když už je známe.

Closes #271.
---
 mo/users.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/mo/users.py b/mo/users.py
index aac7963b..1df301f9 100644
--- a/mo/users.py
+++ b/mo/users.py
@@ -131,10 +131,17 @@ def find_or_create_participant(user: db.User, year: int, school_id: Optional[int
     part = sess.query(db.Participant).get((user.user_id, year))
     is_new = part is None
     if part is None:
+        prev_part = sess.query(db.Participant).filter_by(user_id=user.user_id).order_by(db.Participant.year.desc()).limit(1).one_or_none()
         if not school_id:
-            raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést školu.')
+            if prev_part:
+                school_id = prev_part.school
+            else:
+                raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést školu.')
         if not birth_year:
-            raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést rok narození.')
+            if prev_part:
+                birth_year = prev_part.birth_year
+            else:
+                raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést rok narození.')
         if not grade:
             raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést ročník.')
         part = db.Participant(user=user, year=year, school=school_id, birth_year=birth_year, grade=grade)
-- 
GitLab