diff --git a/mo/users.py b/mo/users.py index aac7963b5b38077d1169d3c4f7a38b074998aa2e..1df301f95087741537ae0e9866e787c712798b36 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)