Skip to content
Snippets Groups Projects

Sazba výsledkovek TeXem

Merged Martin Mareš requested to merge mj/vysledky-pdf into devel
1 file
+ 56
0
Compare changes
  • Side-by-side
  • Inline
+ 56
0
#!/usr/bin/env python3
import argparse
import mo.db as db
import mo.jobs.score
from mo.score import Score
from mo.util import init_standalone
import os
import shutil
from sqlalchemy.orm import joinedload
parser = argparse.ArgumentParser(description='Testuje generování výsledkových listin v PDF')
parser.add_argument('--contest', type=int, metavar='ID', help='soutěž')
parser.add_argument('--year', type=int, metavar='ID', help='ročník')
args = parser.parse_args()
init_standalone()
sess = db.get_session()
ctq = sess.query(db.Contest).join(db.Contest.round)
if args.contest is not None:
ctq = ctq.filter(db.Contest.contest_id == args.contest)
else:
ctq = ctq.filter(db.Round.round_type != db.RoundType.other)
if args.year is not None:
ctq = ctq.filter(db.Round.year == args.year)
contests = ctq.options(joinedload(db.Contest.round)).all()
for ct in contests:
r = ct.round
print(f'#{ct.contest_id}: {r.round_code_short()} ({ct.place.get_code()})')
score = Score(r.master, ct)
results = score.get_sorted_results()
for severity, msg in score.get_messages():
if severity != 'info':
print(f'\t{severity}: {msg}')
temp_dir = f'tmp/score/{r.round_code_short()}/{ct.place.get_code()}'
shutil.rmtree(temp_dir, ignore_errors=True)
os.makedirs(temp_dir, exist_ok=True)
pdf = mo.jobs.score.make_score_pdf(temp_dir, score, results)
final = f'{temp_dir}.pdf'
try:
os.unlink(final)
except FileNotFoundError:
pass
os.link(pdf, final)
print(f'\t=> {final}')
Loading