apres tests logos
This commit is contained in:
parent
3576847fb8
commit
2859b2caa4
|
@ -51,14 +51,13 @@ Chaque semestre peut si nécessaire utiliser un type de bulletin différent.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import io
|
import io
|
||||||
import os
|
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from reportlab.platypus.doctemplate import PageTemplate, BaseDocTemplate
|
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
|
import app.scodoc.sco_utils as scu
|
||||||
from app import log
|
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_preferences
|
||||||
from app.scodoc import sco_etud
|
from app.scodoc import sco_etud
|
||||||
import sco_version
|
import sco_version
|
||||||
from app.scodoc.sco_logos import find_logo
|
from app.scodoc.sco_logos import replace_logo
|
||||||
|
|
||||||
|
|
||||||
def pdfassemblebulletins(
|
def pdfassemblebulletins(
|
||||||
|
@ -146,14 +145,16 @@ def process_field(field, cdict, style, suppress_empty_pars=False, format="pdf"):
|
||||||
text = re.sub(
|
text = re.sub(
|
||||||
r"<(\s*)logo(.*?)src\s*=\s*(.*?)>", r"<\1logo\2\3>", text
|
r"<(\s*)logo(.*?)src\s*=\s*(.*?)>", r"<\1logo\2\3>", text
|
||||||
) # remove forbidden src attribute
|
) # remove forbidden src attribute
|
||||||
image = find_logo(logoname=text, dept_id=g.scodoc_dept_id)
|
text = re.sub(
|
||||||
if image is not None:
|
r'<\s*logo(.*?)name\s*=\s*"(\w*?)"(.*?)/?>',
|
||||||
text = re.sub(
|
lambda m: r'<img %s src="%s"%s/>'
|
||||||
r'<\s*logo(.*?)name\s*=\s*"(\w*?)"(.*?)/?>',
|
% (
|
||||||
r'<img\1src="%s"/>' % image.filepath,
|
m.group(1),
|
||||||
)
|
replace_logo(name=m.group(2), dept_id=g.scodoc_dept_id),
|
||||||
|
m.group(3),
|
||||||
# log('field: %s' % (text))
|
),
|
||||||
|
text,
|
||||||
|
) # log('field: %s' % (text))
|
||||||
return sco_pdf.makeParas(text, style, suppress_empty=suppress_empty_pars)
|
return sco_pdf.makeParas(text, style, suppress_empty=suppress_empty_pars)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,12 @@ def write_logo(stream, name, dept_id=None):
|
||||||
Logo(logoname=name, dept_id=dept_id).create(stream)
|
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():
|
def list_logos():
|
||||||
inventory = {GLOBAL: _list_dept_logos()} # logos globaux (header / footer)
|
inventory = {GLOBAL: _list_dept_logos()} # logos globaux (header / footer)
|
||||||
for dept in Departement.query.filter_by(visible=True).all():
|
for dept in Departement.query.filter_by(visible=True).all():
|
||||||
|
|
|
@ -216,6 +216,7 @@ class ScolarsPageTemplate(PageTemplate):
|
||||||
)
|
)
|
||||||
PageTemplate.__init__(self, "ScolarsPageTemplate", [content])
|
PageTemplate.__init__(self, "ScolarsPageTemplate", [content])
|
||||||
self.logo = None
|
self.logo = None
|
||||||
|
breakpoint()
|
||||||
logo = find_logo(
|
logo = find_logo(
|
||||||
logoname="bul_pdf_background", dept_id=g.scodoc_dept_id, prefix=None
|
logoname="bul_pdf_background", dept_id=g.scodoc_dept_id, prefix=None
|
||||||
)
|
)
|
||||||
|
|
|
@ -36,12 +36,12 @@
|
||||||
<div class="configuration_logo">
|
<div class="configuration_logo">
|
||||||
<h3>Logo en-tête</h3>
|
<h3>Logo en-tête</h3>
|
||||||
<p class="help">image placée en haut de certains documents documents PDF. Image actuelle:</p>
|
<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>
|
alt="pas de logo chargé" /></div>
|
||||||
{{ render_field(form.logo_header) }}
|
{{ render_field(form.logo_header) }}
|
||||||
<h3>Logo pied de page</h3>
|
<h3>Logo pied de page</h3>
|
||||||
<p class="help">image placée en pied de page de certains documents documents PDF. Image actuelle:</p>
|
<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>
|
alt="pas de logo chargé" /></div>
|
||||||
{{ render_field(form.logo_footer) }}
|
{{ render_field(form.logo_footer) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -264,9 +264,7 @@ def configuration():
|
||||||
SMALL_SIZE = (300, 300)
|
SMALL_SIZE = (300, 300)
|
||||||
|
|
||||||
|
|
||||||
def _return_logo(
|
def _return_logo(name="header", dept_id="", small=False, strict: bool = True):
|
||||||
name="header", dept_id="", small=False, global_if_not_found: bool = True
|
|
||||||
):
|
|
||||||
# stockée dans /opt/scodoc-data/config/logos donc servie manuellement ici
|
# stockée dans /opt/scodoc-data/config/logos donc servie manuellement ici
|
||||||
# génération d'une url
|
# génération d'une url
|
||||||
# url = url_for(
|
# url = url_for(
|
||||||
|
@ -275,7 +273,7 @@ def _return_logo(
|
||||||
# dept_id=dept_id,
|
# dept_id=dept_id,
|
||||||
# global_if_not_found=global_if_not_found,
|
# 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:
|
if logo is not None:
|
||||||
suffix = logo.suffix
|
suffix = logo.suffix
|
||||||
if small:
|
if small:
|
||||||
|
@ -302,12 +300,12 @@ def _return_logo(
|
||||||
@bp.route("/ScoDoc/<int:dept_id>/logos/<name>/small")
|
@bp.route("/ScoDoc/<int:dept_id>/logos/<name>/small")
|
||||||
@admin_required
|
@admin_required
|
||||||
def get_logo_small(name: str, dept_id: int):
|
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(
|
return _return_logo(
|
||||||
name,
|
name,
|
||||||
dept_id=dept_id,
|
dept_id=dept_id,
|
||||||
small=True,
|
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>")
|
@bp.route("/ScoDoc/<int:dept_id>/logos/<name>")
|
||||||
@admin_required
|
@admin_required
|
||||||
def get_logo(name: str, dept_id: int):
|
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(
|
return _return_logo(
|
||||||
name,
|
name,
|
||||||
dept_id=dept_id,
|
dept_id=dept_id,
|
||||||
small=False,
|
small=False,
|
||||||
global_if_not_found=global_if_not_found.upper() not in ["0", "FALSE"],
|
strict=strict.upper() not in ["0", "FALSE"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue