Améliore message d'erreur si logo manquant dans un PDF

This commit is contained in:
Emmanuel Viennet 2021-10-04 00:22:44 +02:00
parent f59308b863
commit e32d7b1b4e
2 changed files with 20 additions and 9 deletions

View File

@ -66,7 +66,7 @@ from app.scodoc.sco_utils import (
LOGOS_IMAGES_ALLOWED_TYPES, LOGOS_IMAGES_ALLOWED_TYPES,
) )
from app import log from app import log
from app.scodoc.sco_exceptions import ScoGenError from app.scodoc.sco_exceptions import ScoGenError, ScoValueError
import sco_version import sco_version
PAGE_HEIGHT = defaultPageSize[1] PAGE_HEIGHT = defaultPageSize[1]
@ -121,6 +121,7 @@ def makeParas(txt, style, suppress_empty=False):
"""Returns a list of Paragraph instances from a text """Returns a list of Paragraph instances from a text
with one or more <para> ... </para> with one or more <para> ... </para>
""" """
result = []
try: try:
paras = _splitPara(txt) paras = _splitPara(txt)
if suppress_empty: if suppress_empty:
@ -133,21 +134,31 @@ def makeParas(txt, style, suppress_empty=False):
if m.group(1): # non empty paragraph if m.group(1): # non empty paragraph
r.append(para) r.append(para)
paras = r paras = r
return [Paragraph(SU(s), style) for s in paras] result = [Paragraph(SU(s), style) for s in paras]
except OSError as e:
msg = str(e)
# If a file is missing, try to display the invalid name
m = re.match(r".*\sfilename=\'(.*?)\'.*", msg, re.DOTALL)
if m:
filename = os.path.split(m.group(1))[1]
if filename.startswith("logo_"):
filename = filename[len("logo_") :]
raise ScoValueError(
f"Erreur dans le format PDF paramétré: fichier logo <b>{filename}</b> non trouvé"
) from e
else:
raise e
except Exception as e: except Exception as e:
detail = " " + str(e) detail = " " + str(e)
log(traceback.format_exc()) log(traceback.format_exc())
log("Invalid pdf para format: %s" % txt) log("Invalid pdf para format: %s" % txt)
return [ result = [
Paragraph( Paragraph(
SU( SU('<font color="red"><i>Erreur: format invalide</i></font>'),
'<font color="red"><i>Erreur: format invalide{}</i></font>'.format(
detail
)
),
style, style,
) )
] ]
return result
def bold_paras(L, tag="b", close=None): def bold_paras(L, tag="b", close=None):

View File

@ -25,7 +25,7 @@ from app.views import scodoc, notes, scolar, absences, users
@scodoc_bp.before_app_request @scodoc_bp.before_app_request
def start_scodoc_request(): def start_scodoc_request():
"""Affecte toutes les requêtes, de tous les blueprints""" """Affecte toutes les requêtes, de tous les blueprints"""
current_app.logger.info(f"start_scodoc_request") # current_app.logger.info(f"start_scodoc_request")
ndb.open_db_connection() ndb.open_db_connection()
if current_user.is_authenticated: if current_user.is_authenticated:
current_user.last_seen = datetime.datetime.utcnow() current_user.last_seen = datetime.datetime.utcnow()