Select Git revision
config.py.example
-
Martin Mareš authoredMartin Mareš authored
import-points 1.70 KiB
#!/usr/bin/env python3
import argparse
import sys
from mo.csv import FileFormat
import mo.db as db
from mo.imports import PointsImport
import mo.users
import mo.util
from mo.util import die
parser = argparse.ArgumentParser(description='Importuje body za jednu nebo více úloh (bez --import vypíše šablonu).')
parser.add_argument('--round', '-r', type=str, required=True, metavar='YY-C-S[p]', help='kód kola')
parser.add_argument('--task', '-t', type=str, metavar='ID', help='kód úlohy (default: všechny úlohy kola)')
parser.add_argument('--user', '-u', type=str, required=True, metavar='EMAIL', help='uživatel, ktery provádí import')
parser.add_argument('--import', '-i', dest='import_file', type=str, metavar='NAME', help='importuje data ze souboru (TSV)')
parser.add_argument('--add-del', default=False, action='store_true', help='povolí zakládat/rušit řešení')
args = parser.parse_args()
mo.util.init_standalone()
sess = db.get_session()
round_code = mo.util.RoundCode.parse(args.round)
if round_code is None:
die("Chybná syntaxe kódu kola")
round = mo.util.get_round_by_code(round_code)
if round is None:
die("Kolo s tímto kódem neexistuje!")
if args.task is not None:
task = sess.query(db.Task).filter_by(round=round, code=args.task).one_or_none()
if task is None:
die("Úloha s tímto kódem neexistuje")
else:
task = None
user = mo.users.user_by_email(args.user)
if user is None:
die(f"Uživatel {args.user} neexistuje")
imp = PointsImport(
user,
round=round,
task=task,
allow_add_del=args.add_del,
)
imp.fmt = FileFormat.tsv
if args.import_file:
if not imp.run(args.import_file):
sys.exit(1)
else:
sys.stdout.write(imp.get_template())