Skip to content
Snippets Groups Projects

Sazba diplomů

Merged Martin Mareš requested to merge diplomy into devel
1 file
+ 9
2
Compare changes
  • Side-by-side
  • Inline
+ 9
2
# Web: Certifikáty
import os
from datetime import datetime
from flask import render_template, g, redirect, url_for
from flask.helpers import send_file, flash
from flask_wtf import FlaskForm
import flask_wtf.file
from markupsafe import Markup
import os
import pikepdf
from pikepdf.models.metadata import encode_pdf_date
from sqlalchemy.orm import joinedload
from tempfile import NamedTemporaryFile
from typing import Tuple, Optional, Dict
@@ -41,7 +43,9 @@ def send_certificate(ct_id: int, cert_type: str, user_filename: str, user_id: Op
raise werkzeug.exceptions.NotFound()
file = os.path.join(mo.util.data_dir('certs'), cfile.pdf_file)
if not os.path.isfile(file):
try:
stat = os.stat(file)
except FileNotFoundError:
logger.error(f'Certifikát {file} je v DB, ale soubor neexistuje')
raise werkzeug.exceptions.NotFound()
@@ -56,6 +60,9 @@ def send_certificate(ct_id: int, cert_type: str, user_filename: str, user_id: Op
with pikepdf.open(file, attempt_recovery=False) as src:
dst = pikepdf.new()
dst.pages.append(src.pages[cert.page_number - 1])
dst.docinfo['/Title'] = f'Matematická Olympiáda – {typ.friendly_name()}'
dst.docinfo['/Creator'] = 'Odevzdávací Systém Matematické Olympiády'
dst.docinfo['/CreationDate'] = encode_pdf_date(datetime.fromtimestamp(stat.st_mtime).astimezone())
tmp_file = NamedTemporaryFile(dir=mo.util.data_dir('tmp'), prefix='cert-')
dst.save(tmp_file.name)
except pikepdf.PdfError as e:
Loading