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