Skip to content
Snippets Groups Projects

Generování protokolů a zpracování scanů

Merged Martin Mareš requested to merge mj/protokoly into devel
1 file
+ 10
2
Compare changes
  • Side-by-side
  • Inline
+ 10
2
# Implementace jobů na sazbu protokolů
import os
import re
import shutil
from sqlalchemy.orm import joinedload
import subprocess
@@ -27,6 +28,14 @@ def schedule_create_protocols(contest: db.Contest, site: Optional[db.Place], for
the_job.submit()
def tex_escape(s: str) -> str:
# Primitivní escapování do TeXu. Nesnaží se ani tak o věrnou intepretaci všech znaků,
# jako o zabránění pádu TeXu kvůli divným znakům.
s = re.sub(r'[\\{}#$%^]', '?', s)
s = re.sub(r'([&_])', r'\\\1', s)
return s
@job_handler(db.JobType.create_protocols)
def handle_create_protocols(the_job: TheJob):
"""Vygeneruje formuláře protokolů.
@@ -77,14 +86,13 @@ def handle_create_protocols(the_job: TheJob):
for p in pants:
for t in tasks:
args = [
# FIXME: Escaping
':'.join(['MO', contest.round.round_code_short(), t.code, str(p.user_id)]),
p.user.full_name(),
p.grade,
p.school_place.name,
t.code,
]
f.write('\\proto' + "".join(['{' + x + '}' for x in args]) + '\n')
f.write('\\proto' + "".join(['{' + tex_escape(x) + '}' for x in args]) + '\n')
npages += 1
f.write('\n\\bye\n')
Loading