From d7f3376103ff54ecf17c054bdf62c09a219990be Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 10 Feb 2024 15:02:18 +0100 Subject: [PATCH] =?UTF-8?q?fiche=5Fetud:=20restreint=20l'acc=C3=A8s=20aux?= =?UTF-8?q?=20annotations=20=C3=A0=20la=20permission=20ViewEtudData?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_page_etud.py | 196 ++++++++++++++++++++---------------- 1 file changed, 111 insertions(+), 85 deletions(-) diff --git a/app/scodoc/sco_page_etud.py b/app/scodoc/sco_page_etud.py index 2a317add2..5d40b9d47 100644 --- a/app/scodoc/sco_page_etud.py +++ b/app/scodoc/sco_page_etud.py @@ -327,34 +327,10 @@ def fiche_etud(etudid=None): info["link_inscrire_ailleurs"] = "" # Liste des annotations - annotations_list = [] - annotations = EtudAnnotation.query.filter_by(etudid=etud.id).order_by( - sa.desc(EtudAnnotation.date) + html_annotations_list = "\n".join( + [] if restrict_etud_data else get_html_annotations_list(etud) ) - for annot in annotations: - del_link = ( - f"""{ - scu.icontag( - "delete_img", - border="0", - alt="suppress", - title="Supprimer cette annotation", - ) - }""" - if sco_permissions_check.can_suppress_annotation(annot.id) - else "" - ) - author = User.query.filter_by(user_name=annot.author).first() - annotations_list.append( - f"""Le {annot.date.strftime("%d/%m/%Y") if annot.date else "?"} - par {author.get_prenomnom() if author else "?"} : - {annot.comment or ""}{del_link} - """ - ) - info["liste_annotations"] = "\n".join(annotations_list) # fiche admission infos_admission = _infos_admission(etud, restrict_etud_data) has_adm_notes = any( @@ -442,11 +418,7 @@ def fiche_etud(etudid=None): """ else: info["debouche_html"] = "" # pas de boite "devenir" - # - if info["liste_annotations"]: - info["tit_anno"] = '
Annotations
' - else: - info["tit_anno"] = "" + # Inscriptions info[ "inscriptions_mkup" @@ -517,7 +489,9 @@ def fiche_etud(etudid=None): ) info_naissance = ( - f"""Né{etud.e} le :{info["info_naissance"]}""" + f"""Né{etud.e} le : + {info["info_naissance"]} + """ if info["info_naissance"] else "" ) @@ -538,6 +512,35 @@ def fiche_etud(etudid=None): """ ) + info["annotations_mkup"] = ( + f""" +
+
Annotations
+ {html_annotations_list}
+ +
+ + Ajouter une annotation sur {etud.nomprenom}: +
+ +
+
Ces annotations sont lisibles par tous les utilisateurs ayant la permission + ViewEtudData dans ce département (souvent les enseignants et le + secrétariat). +
+
L'annotation commençant par "PE:" est un avis de poursuite d'études.
+
+
+ + + +
+
+ """ + if not restrict_etud_data + else "" + ) + tmpl = ( """
@@ -564,27 +567,7 @@ def fiche_etud(etudid=None): %(debouche_html)s -
-%(tit_anno)s -
%(liste_annotations)s
- -
- -Ajouter une annotation sur %(nomprenom)s: - - - -
-
-Ces annotations sont lisibles par tous les enseignants et le secrétariat. -
-L'annotation commençant par "PE:" est un avis de poursuite d'études. -
-
- -
-
-
+%(annotations_mkup)s
code NIP: %(code_nip)s
@@ -613,31 +596,41 @@ def fiche_etud(etudid=None): def _format_adresse(adresse: Adresse | None) -> dict: """{ "telephonestr" : ..., "telephonemobilestr" : ... } (formats html)""" d = { - "telephonestr": ("Tél.: " + scu.format_telephone(adresse.telephone)) - if (adresse and adresse.telephone) - else "", + "telephonestr": ( + ("Tél.: " + scu.format_telephone(adresse.telephone)) + if (adresse and adresse.telephone) + else "" + ), "telephonemobilestr": ( - "Mobile: " + scu.format_telephone(adresse.telephonemobile) - ) - if (adresse and adresse.telephonemobile) - else "", + ("Mobile: " + scu.format_telephone(adresse.telephonemobile)) + if (adresse and adresse.telephonemobile) + else "" + ), # e-mail: - "email_link": ", ".join( - [ - f"""{m}""" - for m in [adresse.email, adresse.emailperso] - if m - ] - ) - if adresse and (adresse.email or adresse.emailperso) - else "", - "domicile": (adresse.domicile or "") - if adresse - and (adresse.domicile or adresse.codepostaldomicile or adresse.villedomicile) - else "inconnue", - "paysdomicile": f"{sco_etud.format_pays(adresse.paysdomicile)}" - if adresse and adresse.paysdomicile - else "", + "email_link": ( + ", ".join( + [ + f"""{m}""" + for m in [adresse.email, adresse.emailperso] + if m + ] + ) + if adresse and (adresse.email or adresse.emailperso) + else "" + ), + "domicile": ( + (adresse.domicile or "") + if adresse + and ( + adresse.domicile or adresse.codepostaldomicile or adresse.villedomicile + ) + else "inconnue" + ), + "paysdomicile": ( + f"{sco_etud.format_pays(adresse.paysdomicile)}" + if adresse and adresse.paysdomicile + else "" + ), } d["telephones"] = ( f"
{d['telephonestr']}    {d['telephonemobilestr']}" @@ -680,15 +673,15 @@ def _infos_admission(etud: Identite, restrict_etud_data: bool) -> dict: "info_lycee": info_lycee, "rapporteur": etud.admission.rapporteur if not restrict_etud_data else "", "rap": rap, - "commentaire": (etud.admission.commentaire or "") - if not restrict_etud_data - else "", - "classement": (etud.admission.classement or "") - if not restrict_etud_data - else "", - "type_admission": (etud.admission.type_admission or "") - if not restrict_etud_data - else "", + "commentaire": ( + (etud.admission.commentaire or "") if not restrict_etud_data else "" + ), + "classement": ( + (etud.admission.classement or "") if not restrict_etud_data else "" + ), + "type_admission": ( + (etud.admission.type_admission or "") if not restrict_etud_data else "" + ), "math": (etud.admission.math or "") if not restrict_etud_data else "", "physique": (etud.admission.physique or "") if not restrict_etud_data else "", "anglais": (etud.admission.anglais or "") if not restrict_etud_data else "", @@ -696,6 +689,39 @@ def _infos_admission(etud: Identite, restrict_etud_data: bool) -> dict: } +def get_html_annotations_list(etud: Identite) -> list[str]: + """Liste de chaînes html décrivant les annotations.""" + html_annotations_list = [] + annotations = EtudAnnotation.query.filter_by(etudid=etud.id).order_by( + sa.desc(EtudAnnotation.date) + ) + for annot in annotations: + del_link = ( + f"""{ + scu.icontag( + "delete_img", + border="0", + alt="suppress", + title="Supprimer cette annotation", + ) + }""" + if sco_permissions_check.can_suppress_annotation(annot.id) + else "" + ) + + author = User.query.filter_by(user_name=annot.author).first() + html_annotations_list.append( + f"""Le { + annot.date.strftime("%d/%m/%Y") if annot.date else "?"} + par {author.get_prenomnom() if author else "?"} : + {annot.comment or ""}{del_link} + """ + ) + return html_annotations_list + + def menus_etud(etudid): """Menu etudiant (operations sur l'etudiant)""" authuser = current_user