Select Git revision
-
Martin Mareš authoredMartin Mareš authored
set-contest 1.60 KiB
#!/usr/bin/env python3
import argparse
from mo.arg_attrs import CONTEST_ATTRS, HelpFormatter
import mo.db as db
import mo.util
from mo.util import die
parser = argparse.ArgumentParser(description='Nastaví parametry soutěží', formatter_class=HelpFormatter)
parser.add_argument('--in-round', type=str, metavar='YY-C-S[p]', help='nastaví všem soutěžím v daném kole')
parser.add_argument('--id', type=int, metavar='ID', help='nastaví soutěži s daným ID')
CONTEST_ATTRS.add_to_arg_parser(parser)
args = parser.parse_args()
mo.util.init_standalone()
sess = db.get_session()
if args.in_round is not None:
round_code = mo.util.RoundCode.parse(args.in_round)
if round_code is None:
die("Chybná syntaxe kódu kola")
rnd = mo.util.get_round_by_code(round_code)
if rnd is None:
die("Kolo s tímto kódem neexistuje!")
contests = sess.query(db.Contest).filter_by(round=rnd).all()
elif args.id is not None:
contests = sess.query(db.Contest).filter_by(contest_id=args.id).all()
if not contests:
die("Soutěž s tímto ID neexistuje")
else:
die("Není vybraná žádná soutěž")
num_modified = 0
for c in contests:
CONTEST_ATTRS.args_to_obj(args, c)
if sess.is_modified(c):
num_modified += 1
changes = db.get_object_changes(c)
mo.util.log(
type=db.LogType.contest,
what=c.contest_id,
details={
'action': 'edit',
'reason': 'script',
'changes': changes,
},
)
sess.commit()
print(f'Modifikováno {num_modified} soutěží z {len(contests)}')