From 55748e9abeeb98f6efae83a832cfa8307466ee12 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Mon, 17 Mar 2025 22:41:47 +0100 Subject: [PATCH] =?UTF-8?q?Filigrannes=20bulletins=20=C3=A9tudiant.=20Fixe?= =?UTF-8?q?s=20#1052?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_bulletins_pdf.py | 6 ++---- app/scodoc/sco_pdf.py | 25 ++++++++++++++++--------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/scodoc/sco_bulletins_pdf.py b/app/scodoc/sco_bulletins_pdf.py index 8b11a070..2942939d 100644 --- a/app/scodoc/sco_bulletins_pdf.py +++ b/app/scodoc/sco_bulletins_pdf.py @@ -296,17 +296,15 @@ def get_etud_bulletins_pdf(etudid, version="selectedevals"): etud = Identite.get_etud(etudid) fragments = [] bookmarks = {} - filigrannes = {} i = 1 for formsemestre in etud.get_formsemestres(): - frag, filigranne = sco_bulletins.do_formsemestre_bulletinetud( + frag, _ = sco_bulletins.do_formsemestre_bulletinetud( formsemestre, etud, fmt="pdfpart", version=version, ) fragments += frag - filigrannes[i] = filigranne bookmarks[i] = formsemestre.session_id() # eg RT-DUT-FI-S1-2015 i = i + 1 infos = {"DeptName": sco_preferences.get_preference("DeptName")} @@ -322,7 +320,7 @@ def get_etud_bulletins_pdf(etudid, version="selectedevals"): etud.nomprenom, infos, bookmarks, - filigranne=filigrannes, + # filigranne=filigrannes, server_name=server_name, ) finally: diff --git a/app/scodoc/sco_pdf.py b/app/scodoc/sco_pdf.py index 6d5f72e2..4a1ab88e 100755 --- a/app/scodoc/sco_pdf.py +++ b/app/scodoc/sco_pdf.py @@ -27,11 +27,11 @@ """Generation de PDF: définitions diverses et gestion du verrou - reportlab n'est pas réentrante: il ne faut qu'une seule opération PDF au même moment. - Tout accès à ReportLab doit donc être précédé d'un PDFLOCK.acquire() - et terminé par un PDFLOCK.release() +reportlab n'est pas réentrante: il ne faut qu'une seule opération PDF au même moment. +Tout accès à ReportLab doit donc être précédé d'un PDFLOCK.acquire() +et terminé par un PDFLOCK.release() - En ScoDoc 9, ce n'est pas nécessaire car on est multiprocessus / monothread. +En ScoDoc 9, ce n'est pas nécessaire car on est multiprocessus / monothread. """ import datetime import html @@ -226,6 +226,7 @@ class DebutBulletin(BulMarker): """ def __init__(self, bookmark=None, filigranne=None, footer_content=None): + log(f"DebutBulletin: filigranne={filigranne}") self.bookmark = bookmark self.filigranne = filigranne self.footer_content = footer_content @@ -245,11 +246,13 @@ class ScoDocPageTemplate(PageTemplate): margins=(0, 0, 0, 0), # additional margins in mm (left,top,right, bottom) server_name="", footer_template=DEFAULT_PDF_FOOTER_TEMPLATE, - filigranne=None, + filigranne: str | dict[int, str] | None = None, preferences=None, # dictionnary with preferences, required with_page_numbers=False, ): - """Initialise our page template.""" + """Initialise our page template. + - filigranne: chaine ou dict { page_no : str } ou None + """ # defered import (solve circular dependency ->sco_logo ->scodoc, ->sco_pdf from app.scodoc.sco_logos import find_logo @@ -378,10 +381,12 @@ class ScoDocPageTemplate(PageTemplate): self.draw_footer(canv, foot_content or self.footer_string()) # ---- Filigranne (texte en diagonal en haut a gauche de chaque page) filigranne = None + filigranne_created_by_debutbulletin = False if hasattr(doc, "filigranne"): # filigranne crée par DebutBulletin filigranne = doc.filigranne - if not filigranne and self.filigranne: + filigranne_created_by_debutbulletin = True + if filigranne is None and self.filigranne: if isinstance(self.filigranne, str): filigranne = self.filigranne # same for all pages else: @@ -394,7 +399,8 @@ class ScoDocPageTemplate(PageTemplate): canv.setFillColorRGB(1.0, 0.65, 0.65, alpha=0.6) canv.drawCentredString(0, 0, SU(filigranne)) canv.restoreState() - doc.filigranne = None + if not filigranne_created_by_debutbulletin: + doc.filigranne = None # Increment page number self.page_number += 1 @@ -420,7 +426,8 @@ class BulletinDocTemplate(BaseDocTemplate): self.canv.addOutlineEntry( SU(flowable.bookmark), flowable.bookmark, level=0, closed=None ) - if flowable.filigranne: + log(f"filigranne: {flowable.filigranne} set in {self}") # XXX + if flowable.filigranne is not None: self.filigranne = flowable.filigranne -- GitLab