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

merge-users si umí aspoň částečně poradit s testovací soutěží

parent 0e77d298
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
import argparse
from sqlalchemy import and_
import mo.db as db
import mo.users
......@@ -33,10 +34,31 @@ 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__.delete().where(db.Participant.user_id == suid))
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.UserRole.__table__.update().where(db.UserRole.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