From 703408fcaa558081c694ea0800da127f6155b5a1 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Fri, 10 Mar 2023 11:49:08 +0100 Subject: [PATCH] =?UTF-8?q?merge-users:=20=C5=98e=C5=A1en=C3=AD=20koliz?= =?UTF-8?q?=C3=AD=20v=20participantech?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Taktéž ruším automatické mazání účasti v testovací soutěži, už žádné nové nevznikají a staré nejspíš brzy dávkově zruším. --- bin/merge-users | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/bin/merge-users b/bin/merge-users index 396ab39c..650827b7 100755 --- a/bin/merge-users +++ b/bin/merge-users @@ -34,31 +34,19 @@ print(f"Slučuji UID {suid} do UID {duid}") sess = db.get_session() conn = sess.connection() -test_round = sess.query(db.Round).filter_by(category='T').one_or_none() -if test_round is not None: - test_submits = (sess - .query(db.Solution) - .join(db.Task) - .filter(db.Solution.user_id == suid) - .filter(db.Task.round == test_round) - .filter(db.Round.category == 'T') - .all()) - if test_submits: - mo.util.die("Zdrojový účastník něco odevzdal v testovací soutěži, nutno vyřešit ručně") - test_contest = sess.query(db.Contest).filter_by(round=test_round).one_or_none() - test_contest_id = test_contest.contest_id if test_contest is not None else None -else: - test_contest = None - test_contest_id = None - sess.flush() conn.execute(db.Log.__table__.update().where(db.Log.changed_by == suid).values(changed_by=duid)) -conn.execute(db.Participant.__table__.update().where(db.Participant.user_id == suid).values(user_id=duid)) +src_pants = sess.query(db.Participant).filter_by(user_id=suid) +dst_pants = sess.query(db.Participant).filter_by(user_id=duid) +for pant in src_pants: + if any(d.year == pant.year for d in dst_pants): + print(f"Účast v ročníku {pant.year} koliduje, zdrojovou zahazuji") + sess.delete(pant) +sess.flush() -if test_contest: - conn.execute(db.Participation.__table__.delete().where(and_(db.Participation.user_id == suid, db.Participation.contest_id == test_contest_id))) +conn.execute(db.Participant.__table__.update().where(db.Participant.user_id == suid).values(user_id=duid)) conn.execute(db.Participation.__table__.update().where(db.Participation.user_id == suid).values(user_id=duid)) -- GitLab