Skip to content
Snippets Groups Projects
Commit 703408fc authored by Martin Mareš's avatar Martin Mareš
Browse files

merge-users: Řešení kolizí v participantech

Taktéž ruším automatické mazání účasti v testovací soutěži,
už žádné nové nevznikají a staré nejspíš brzy dávkově zruším.
parent 4cbacffd
No related branches found
No related tags found
No related merge requests found
...@@ -34,31 +34,19 @@ print(f"Slučuji UID {suid} do UID {duid}") ...@@ -34,31 +34,19 @@ print(f"Slučuji UID {suid} do UID {duid}")
sess = db.get_session() sess = db.get_session()
conn = sess.connection() 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() sess.flush()
conn.execute(db.Log.__table__.update().where(db.Log.changed_by == suid).values(changed_by=duid)) 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.Participant.__table__.update().where(db.Participant.user_id == suid).values(user_id=duid))
conn.execute(db.Participation.__table__.delete().where(and_(db.Participation.user_id == suid, db.Participation.contest_id == test_contest_id)))
conn.execute(db.Participation.__table__.update().where(db.Participation.user_id == suid).values(user_id=duid)) conn.execute(db.Participation.__table__.update().where(db.Participation.user_id == suid).values(user_id=duid))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment