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