apres tests logos

This commit is contained in:
Jean-Marie Place 2021-11-06 19:22:04 +01:00
parent 3576847fb8
commit 2859b2caa4
5 changed files with 27 additions and 21 deletions

View File

@ -51,14 +51,13 @@ Chaque semestre peut si nécessaire utiliser un type de bulletin différent.
"""
import io
import os
import re
import time
import traceback
from reportlab.platypus.doctemplate import PageTemplate, BaseDocTemplate
from flask import g, url_for, request
from flask import g, request
import app.scodoc.sco_utils as scu
from app import log
@ -68,7 +67,7 @@ from app.scodoc import sco_pdf
from app.scodoc import sco_preferences
from app.scodoc import sco_etud
import sco_version
from app.scodoc.sco_logos import find_logo
from app.scodoc.sco_logos import replace_logo
def pdfassemblebulletins(
@ -146,14 +145,16 @@ def process_field(field, cdict, style, suppress_empty_pars=False, format="pdf"):
text = re.sub(
r"<(\s*)logo(.*?)src\s*=\s*(.*?)>", r"<\1logo\2\3>", text
) # remove forbidden src attribute
image = find_logo(logoname=text, dept_id=g.scodoc_dept_id)
if image is not None:
text = re.sub(
r'<\s*logo(.*?)name\s*=\s*"(\w*?)"(.*?)/?>',
r'<img\1src="%s"/>' % image.filepath,
)
# log('field: %s' % (text))
text = re.sub(
r'<\s*logo(.*?)name\s*=\s*"(\w*?)"(.*?)/?>',
lambda m: r'<img %s src="%s"%s/>'
% (
m.group(1),
replace_logo(name=m.group(2), dept_id=g.scodoc_dept_id),
m.group(3),
),
text,
) # log('field: %s' % (text))
return sco_pdf.makeParas(text, style, suppress_empty=suppress_empty_pars)

View File

@ -73,6 +73,12 @@ def write_logo(stream, name, dept_id=None):
Logo(logoname=name, dept_id=dept_id).create(stream)
def replace_logo(name, dept_id):
logo = find_logo(logoname=name, dept_id=dept_id)
if logo is not None:
return logo.filepath
def list_logos():
inventory = {GLOBAL: _list_dept_logos()} # logos globaux (header / footer)
for dept in Departement.query.filter_by(visible=True).all():

View File

@ -216,6 +216,7 @@ class ScolarsPageTemplate(PageTemplate):
)
PageTemplate.__init__(self, "ScolarsPageTemplate", [content])
self.logo = None
breakpoint()
logo = find_logo(
logoname="bul_pdf_background", dept_id=g.scodoc_dept_id, prefix=None
)

View File

@ -36,12 +36,12 @@
<div class="configuration_logo">
<h3>Logo en-tête</h3>
<p class="help">image placée en haut de certains documents documents PDF. Image actuelle:</p>
<div class="img-container"><img src="{{ url_for('scodoc.get_logo_global', name="header") }}"
<div class="img-container"><img src="{{ url_for('scodoc.get_logo_small', name="header") }}"
alt="pas de logo chargé" /></div>
{{ render_field(form.logo_header) }}
<h3>Logo pied de page</h3>
<p class="help">image placée en pied de page de certains documents documents PDF. Image actuelle:</p>
<div class="img-container"><img src="{{ url_for('scodoc.get_logo_global', name="footer") }}"
<div class="img-container"><img src="{{ url_for('scodoc.get_logo_small', name="footer") }}"
alt="pas de logo chargé" /></div>
{{ render_field(form.logo_footer) }}
</div>

View File

@ -264,9 +264,7 @@ def configuration():
SMALL_SIZE = (300, 300)
def _return_logo(
name="header", dept_id="", small=False, global_if_not_found: bool = True
):
def _return_logo(name="header", dept_id="", small=False, strict: bool = True):
# stockée dans /opt/scodoc-data/config/logos donc servie manuellement ici
# génération d'une url
# url = url_for(
@ -275,7 +273,7 @@ def _return_logo(
# dept_id=dept_id,
# global_if_not_found=global_if_not_found,
# )
logo = sco_logos.find_logo(name, dept_id, global_if_not_found)
logo = sco_logos.find_logo(name, dept_id, strict)
if logo is not None:
suffix = logo.suffix
if small:
@ -302,12 +300,12 @@ def _return_logo(
@bp.route("/ScoDoc/<int:dept_id>/logos/<name>/small")
@admin_required
def get_logo_small(name: str, dept_id: int):
global_if_not_found = request.args.get("global_if_not_found", "True")
strict = request.args.get("strict", "False")
return _return_logo(
name,
dept_id=dept_id,
small=True,
global_if_not_found=global_if_not_found.upper() not in ["0", "FALSE"],
strict=strict.upper() not in ["0", "FALSE"],
)
@ -317,12 +315,12 @@ def get_logo_small(name: str, dept_id: int):
@bp.route("/ScoDoc/<int:dept_id>/logos/<name>")
@admin_required
def get_logo(name: str, dept_id: int):
global_if_not_found = request.args.get("global_if_not_found", "True")
strict = request.args.get("strict", "False")
return _return_logo(
name,
dept_id=dept_id,
small=False,
global_if_not_found=global_if_not_found.upper() not in ["0", "FALSE"],
strict=strict.upper() not in ["0", "FALSE"],
)