Skip to content
Snippets Groups Projects

Stavy soutěže

Merged
Martin Marešrequested to merge
mj/stavy-souteze into devel
All threads resolved!

Files

+ 38
13
@@ -7,7 +7,7 @@ import mo.util
from mo.util import die, init_standalone
parser = argparse.ArgumentParser(description='Založí soutěže pro dané kolo')
parser.add_argument(dest='round', type=str, metavar='YY-C-S', help='ID kola')
parser.add_argument(dest='round', type=str, metavar='YY-C-S[p]', help='ID kola')
parser.add_argument('-n', '--dry-run', default=False, action='store_true', help='pouze ukáže, co by bylo provedeno')
args = parser.parse_args()
@@ -22,18 +22,43 @@ round = mo.util.get_round_by_code(round_code)
if round is None:
die("Kolo s tímto kódem neexistuje!")
regions = sess.query(db.Place).filter_by(level=round.level).all()
assert regions, "Neexistují žádná místa dané úrovně"
if round.state != db.RoundState.delegate:
state = round.state
else:
state = db.RoundState.preparing
for r in regions:
print(f"Zakládám {round.round_code()} pro místo {r.name}")
if not args.dry_run:
c = db.Contest(round=round, place=r)
sess.add(c)
sess.flush()
if round.is_subround():
# Pokud je to podkolo, kopírujeme soutěže z hlavního kola
for mc in sess.query(db.Contest).filter_by(round=round.master):
r = mc.place
print(f"Zakládám {round.round_code()} pro místo {r.name} (podsoutěž)")
mo.util.log(db.LogType.contest, c.contest_id, {
'action': 'created',
})
if not args.dry_run:
c = db.Contest(round=round, place=r, master=mc, state=state)
sess.commit()
sess.add(c)
sess.flush()
mo.util.log(db.LogType.contest, c.contest_id, {
'action': 'created',
})
else:
regions = sess.query(db.Place).filter_by(level=round.level).all()
assert regions, "Neexistují žádná místa dané úrovně"
for r in regions:
print(f"Zakládám {round.round_code()} pro místo {r.name}")
if not args.dry_run:
c = db.Contest(round=round, place=r, state=state)
sess.add(c)
sess.flush()
c.master = c
mo.util.log(db.LogType.contest, c.contest_id, {
'action': 'created',
})
if not args.dry_run:
sess.commit()
Loading