From d0dadef21211d80548c0c112179353c189e971f7 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Thu, 28 Jul 2022 21:41:20 +0200
Subject: [PATCH] =?UTF-8?q?test-pdf-score:=20testov=C3=A1n=C3=AD=20sazby?=
=?UTF-8?q?=20v=C3=BDsledkovek?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bin/test-pdf-score | 56 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100755 bin/test-pdf-score
diff --git a/bin/test-pdf-score b/bin/test-pdf-score
new file mode 100755
index 00000000..6181a062
--- /dev/null
+++ b/bin/test-pdf-score
@@ -0,0 +1,56 @@
+#!/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}')
--
GitLab