Skip to content
Snippets Groups Projects
Commit 0d58f1dc authored by Martin Mareš's avatar Martin Mareš
Browse files

Skript na export/import bodů

parent 82b4c76c
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
import argparse
import sys
from mo.csv import FileFormat
import mo.db as db
from mo.imports import create_import, ImportType
import mo.users
import mo.util
from mo.util import die
parser = argparse.ArgumentParser(description='Importuje body za úlohu (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, required=True, metavar='ID', help='kód úlohy')
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!")
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")
user = mo.users.user_by_email(args.user)
if user is None:
die(f"Uživatel {args.user} neexistuje")
imp = create_import(
user,
type=ImportType.points,
fmt=FileFormat.tsv,
round=round,
task=task,
allow_add_del=args.add_del,
)
if args.import_file:
if not imp.run(args.import_file):
sys.exit(1)
else:
sys.stdout.write(imp.get_template())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment