diff --git a/app/but/jury_but_pv.py b/app/but/jury_but_pv.py index 80f1b1131..49b21c383 100644 --- a/app/but/jury_but_pv.py +++ b/app/but/jury_but_pv.py @@ -198,7 +198,15 @@ def pvjury_table_but( "niveaux": ( deca.descr_niveaux_validation(line_sep=line_sep) if deca else "-" ), - "decision_but": deca.code_valide if deca else "", + "decision_but": ( + ( + scu.ETATS_INSCRIPTION_SHORT.get(deca.inscription_etat) + if deca.inscription_etat != scu.INSCRIT + else deca.code_valide + ) + if deca + else "" + ), "devenir": ( "Diplôme obtenu" if has_diplome diff --git a/app/scodoc/sco_preferences.py b/app/scodoc/sco_preferences.py index 6e0cfdeb9..626b5dd28 100644 --- a/app/scodoc/sco_preferences.py +++ b/app/scodoc/sco_preferences.py @@ -1031,6 +1031,19 @@ class BasePreferences: "category": "pvpdf", }, ), + ( + "PV_SIGNATURE_LEFT", + { + "initvalue": "", + "title": "Texte signature PV gauche", + "explanation": """texte optionnel placé sous la table + du PV de jury, à gauche de la signature""", + "input_type": "textarea", + "rows": 1, + "cols": 64, + "category": "pvpdf", + }, + ), ( "ChiefDeptName", { diff --git a/app/scodoc/sco_pv_pdf.py b/app/scodoc/sco_pv_pdf.py index a9d482795..8a4811a77 100644 --- a/app/scodoc/sco_pv_pdf.py +++ b/app/scodoc/sco_pv_pdf.py @@ -31,13 +31,8 @@ import io import reportlab from reportlab.lib.units import cm, mm -from reportlab.lib.enums import TA_JUSTIFY -from reportlab.platypus import ( - Paragraph, - Spacer, - PageBreak, - Table, -) +from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT, TA_RIGHT +from reportlab.platypus import Paragraph, Spacer, PageBreak, Table, TableStyle from reportlab.platypus.doctemplate import BaseDocTemplate from reportlab.lib.pagesizes import A4, landscape from reportlab.lib import styles @@ -179,7 +174,7 @@ def _pvjury_pdf_type( ) -> tuple[list, bool]: """Objets platypus PDF récapitulant les décisions de jury pour un type de jury (passage ou delivrance). - Ramene: liste d'onj platypus, et un boolen indiquant si au moins un étudiant est diplômé. + Ramene: liste d'obj platypus, et un booléen indiquant si au moins un étudiant est diplômé. """ from app.scodoc import sco_pv_forms from app.but import jury_but_pv @@ -325,15 +320,39 @@ def _pvjury_pdf_type( Table(table_cells, repeatRows=1, colWidths=widths, style=table_style) ) - # Signature du directeur - objects += sco_pdf.make_paras( - f"""{ - sco_preferences.get_preference("DirectorName", formsemestre.id) or "" - }, { - sco_preferences.get_preference("DirectorTitle", formsemestre.id) or "" - }""", + # Table sous la table avec signatures + # Create paragraphs + left_para = sco_pdf.make_paras( + f"""{ + sco_preferences.get_preference("PV_SIGNATURE_LEFT", formsemestre.id) or "" + }""", style, ) + # Signature du directeur + right_para = sco_pdf.make_paras( + f"""{ + sco_preferences.get_preference("DirectorName", formsemestre.id) or "" + }, { + sco_preferences.get_preference("DirectorTitle", formsemestre.id) or "" + }""", + style, + ) + # Create a table with two cells + data = [[left_para, right_para]] + # Create the table + table_signatures = Table(data) + # Apply table style to remove borders + table_signatures.setStyle( + TableStyle( + [ + ("BOX", (0, 0), (-1, -1), 0, "white"), # No border for the table + ("INNERGRID", (0, 0), (-1, -1), 0, "white"), # No inner grid lines + ("VALIGN", (0, 0), (-1, -1), "TOP"), # Align content to the top + ] + ) + ) + objects.append(Spacer(0, 6 * mm)) + objects.append(table_signatures) # Légende des codes codes = list(codes_cursus.CODES_EXPL.keys()) diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py index c88e2e04b..d4c710cc3 100644 --- a/app/scodoc/sco_utils.py +++ b/app/scodoc/sco_utils.py @@ -109,6 +109,11 @@ ETATS_INSCRIPTION = { DEMISSION: "Démission", DEF: "Défaillant", } +ETATS_INSCRIPTION_SHORT = { + INSCRIT: "I", + DEMISSION: "DEM", + DEF: "DEF", +} def convert_fr_date(