Skip to content
Snippets Groups Projects
Select Git revision
  • 6af679880be274b08af28805f8c3e669f653088c
  • master default
  • zs2021
  • zs1920
4 results

first-input.py

Blame
  • 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()