Skip to content
Snippets Groups Projects

Sazba výsledkovek TeXem

Merged Martin Mareš requested to merge mj/vysledky-pdf into devel
All threads resolved!

Files

+ 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