#!/usr/bin/env python3 import argparse import mo.db as db import mo.util from mo.util import die parser = argparse.ArgumentParser(description='Založí soutěžní kolo') 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('-l', '--level', type=int, required=True, help='úroveň v hierarchii oblastí') parser.add_argument('-p', '--part', type=int, default=0, help='část v rámci skupiny kol (default: 0)') parser.add_argument('-n', '--name', type=str, required=True, help='název kola') parser.add_argument('-S', '--step', type=float, default=1, help='bodovací krok (default: 1)') args = parser.parse_args() 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, level=args.level, name=args.name, points_step=args.step, ) 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', 'new': db.row2dict(rnd), }, ) sess.commit()