Skip to content
Snippets Groups Projects
Select Git revision
  • de3a0ae10efcc9ead362805a5d65456cb5981bf1
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

set-contest

Blame
  • 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)}')