Select Git revision
create-round
-
Martin Mareš authored
Postaveny kolem nového modulu mo.arg_attrs.
Martin Mareš authoredPostaveny kolem nového modulu mo.arg_attrs.
create-round 1.59 KiB
#!/usr/bin/env python3
import argparse
from mo.arg_attrs import ROUND_ATTRS, HelpFormatter
import mo.db as db
import mo.util
from mo.util import die
parser = argparse.ArgumentParser(description='Založí soutěžní kolo', formatter_class=HelpFormatter)
parser.add_argument('-y', '--year', type=int, required=True, help='ročník')
parser.add_argument('-c', '--cat', type=str, required=True, help='kategorie')
parser.add_argument('-s', '--seq', type=int, required=True, help='pořadí kola')
parser.add_argument('-p', '--part', type=int, default=0, help='část v rámci skupiny kol (default: 0)')
ROUND_ATTRS.add_to_arg_parser(parser)
args = parser.parse_args()
if args.points_step is Ellipsis:
args.points_step = 1
mo.util.init_standalone()
sess = db.get_session()
if args.part > 1:
master_rnd = sess.query(db.Round).filter_by(year=args.year, category=args.cat, seq=args.seq, part=1).one_or_none()
if master_rnd is None or master_rnd.is_subround():
die("Nemohu nalézt hlavní kolo")
if master_rnd.level != args.level:
die("Hlavní kolo probíhá na odlišné úrovni hierarchie")
else:
master_rnd = None
rnd = db.Round(
year=args.year,
category=args.cat,
seq=args.seq,
part=args.part,
)
ROUND_ATTRS.args_to_obj(args, rnd)
sess.add(rnd)
sess.flush()
if master_rnd is not None:
rnd.master_round_id = master_rnd.round_id
else:
rnd.master_round_id = rnd.round_id
mo.util.log(
type=db.LogType.round,
what=rnd.round_id,
details={
'action': 'created',
'reason': 'script',
'new': db.row2dict(rnd),
},
)
sess.commit()