forked from ScoDoc/ScoDoc
Lettres individuelles: améliore présentation compétences validées
This commit is contained in:
parent
2570f811ed
commit
a92e1ab853
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
"""Décisions de jury (validations) des RCUE et années du BUT
|
"""Décisions de jury (validations) des RCUE et années du BUT
|
||||||
"""
|
"""
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
from app import db
|
from app import db
|
||||||
from app.models import CODE_STR_LEN
|
from app.models import CODE_STR_LEN
|
||||||
@ -208,16 +209,7 @@ def dict_decision_jury(etud: Identite, formsemestre: FormSemestre) -> dict:
|
|||||||
.order_by(UniteEns.numero, UniteEns.acronyme)
|
.order_by(UniteEns.numero, UniteEns.acronyme)
|
||||||
)
|
)
|
||||||
decisions["decision_rcue"] = [v.to_dict_bul() for v in validations_rcues]
|
decisions["decision_rcue"] = [v.to_dict_bul() for v in validations_rcues]
|
||||||
titres_rcues = []
|
titres_rcues = _build_decisions_rcue_list(decisions["decision_rcue"])
|
||||||
for dec_rcue in decisions["decision_rcue"]:
|
|
||||||
niveau = dec_rcue["niveau"]
|
|
||||||
if niveau is None:
|
|
||||||
titres_rcues.append(f"""pas de compétence: code {dec_rcue["code"]}""")
|
|
||||||
else:
|
|
||||||
titres_rcues.append(
|
|
||||||
f"""{niveau["competence"]["titre"]} {niveau["ordre"]}: {
|
|
||||||
dec_rcue["code"]}"""
|
|
||||||
)
|
|
||||||
decisions["descr_decisions_rcue"] = ", ".join(titres_rcues)
|
decisions["descr_decisions_rcue"] = ", ".join(titres_rcues)
|
||||||
decisions["descr_decisions_rcue_list"] = titres_rcues
|
decisions["descr_decisions_rcue_list"] = titres_rcues
|
||||||
decisions["descr_decisions_niveaux"] = (
|
decisions["descr_decisions_niveaux"] = (
|
||||||
@ -243,3 +235,44 @@ def dict_decision_jury(etud: Identite, formsemestre: FormSemestre) -> dict:
|
|||||||
else:
|
else:
|
||||||
decisions["decision_annee"] = None
|
decisions["decision_annee"] = None
|
||||||
return decisions
|
return decisions
|
||||||
|
|
||||||
|
|
||||||
|
def _build_decisions_rcue_list(decisions_rcue: dict) -> list[str]:
|
||||||
|
"""Formatte liste des décisions niveaux de compétences / RCUE pour
|
||||||
|
lettres individuelles.
|
||||||
|
Le résulat est trié par compétence et donne pour chaque niveau avec validation:
|
||||||
|
[ 'Administrer: niveau 1 ADM, niveau 2 ADJ', ... ]
|
||||||
|
"""
|
||||||
|
# Construit { id_competence : validation }
|
||||||
|
# où validation est {'code': 'CMP', 'niveau': {'annee': 'BUT3', 'competence': {}, ... }
|
||||||
|
validation_by_competence = defaultdict(list)
|
||||||
|
for validation in decisions_rcue:
|
||||||
|
competence_id = (
|
||||||
|
validation.get("niveau", {}).get("competence", {}).get("id_orebut")
|
||||||
|
)
|
||||||
|
validation_by_competence[competence_id].append(validation)
|
||||||
|
# Tri des listes de validation par numéro de compétence
|
||||||
|
validations_niveaux = sorted(
|
||||||
|
validation_by_competence.values(),
|
||||||
|
key=lambda v: (
|
||||||
|
v[0].get("niveau", {}).get("competence", {}).get("numero", 0) if v else -1
|
||||||
|
),
|
||||||
|
)
|
||||||
|
titres_rcues = []
|
||||||
|
empty = {} # pour syntaxe f-string
|
||||||
|
for validations in validations_niveaux:
|
||||||
|
if validations:
|
||||||
|
v = validations[0]
|
||||||
|
titre_competence = (
|
||||||
|
v.get("niveau", {}).get("competence", {}).get("titre", "sans titre")
|
||||||
|
)
|
||||||
|
titres_rcues.append(
|
||||||
|
f"""{titre_competence} : """
|
||||||
|
+ ", ".join(
|
||||||
|
[
|
||||||
|
f"niveau {v.get('niveau',empty).get('ordre','?')} {v.get('code', '?')}"
|
||||||
|
for v in validations
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return titres_rcues
|
||||||
|
@ -312,7 +312,7 @@ def pdf_lettre_individuelle(sem, decision, etud: Identite, params, signature=Non
|
|||||||
sig = _simulate_br(sig, '<para leftindent="%(htab1)s">')
|
sig = _simulate_br(sig, '<para leftindent="%(htab1)s">')
|
||||||
objects += sco_pdf.make_paras(
|
objects += sco_pdf.make_paras(
|
||||||
(
|
(
|
||||||
"""<para leftindent="%(htab1)s" spaceBefore="25mm">"""
|
"""<para leftindent="%(htab1)s" spaceBefore="8mm">"""
|
||||||
+ sig
|
+ sig
|
||||||
+ """</para>"""
|
+ """</para>"""
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user