From b21ad91ec2676e50c3f30f6ad9a918694efff6a7 Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet <emmanuel.viennet@gmail.com>
Date: Mon, 10 Mar 2025 19:03:13 +0100
Subject: [PATCH] =?UTF-8?q?Format=20des=20nombres=20de=20la=20table=20'Pou?=
 =?UTF-8?q?rsuites=20d'=C3=A9tudes'.=20Closes=20#1042?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/scodoc/sco_poursuite_dut.py | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/app/scodoc/sco_poursuite_dut.py b/app/scodoc/sco_poursuite_dut.py
index add16a0e..9cc47655 100644
--- a/app/scodoc/sco_poursuite_dut.py
+++ b/app/scodoc/sco_poursuite_dut.py
@@ -47,7 +47,7 @@ from app.scodoc.codes_cursus import code_semestre_validant, code_semestre_attent
 import sco_version
 
 
-def etud_get_poursuite_info(sem: dict, etud: dict) -> dict:
+def etud_get_poursuite_info(sem: dict, etud: dict, keep_numeric: bool = False) -> dict:
     """{ 'nom' : ..., 'semlist' : [ { 'semestre_id': , 'moy' : ... }, {}, ...] }"""
     infos = {}
     infos.update(etud)  # copie nom, prenom, civilite, ...
@@ -72,7 +72,9 @@ def etud_get_poursuite_info(sem: dict, etud: dict) -> dict:
                         moy_ues.append(
                             (
                                 ue["acronyme"],
-                                scu.fmt_note(ue_status["moy"]),
+                                scu.fmt_note(
+                                    ue_status["moy"], keep_numeric=keep_numeric
+                                ),
                             )
                         )
                     else:
@@ -91,7 +93,8 @@ def etud_get_poursuite_info(sem: dict, etud: dict) -> dict:
                         if modimpl["module"]["ue_id"] == ue["ue_id"]:
                             code_module = modimpl["module"]["code"] or ""
                             note_module = scu.fmt_note(
-                                nt.get_etud_mod_moy(modimpl["moduleimpl_id"], etudid)
+                                nt.get_etud_mod_moy(modimpl["moduleimpl_id"], etudid),
+                                keep_numeric=keep_numeric,
                             )
                             # si étudiant inscrit au module, sauf BUT
                             if (note_module != "NI") and not nt.is_apc:
@@ -120,8 +123,16 @@ def etud_get_poursuite_info(sem: dict, etud: dict) -> dict:
                     and nt.get_etud_etat(etudid) == scu.INSCRIT
                 ):
                     d = [
-                        ("moy", scu.fmt_note(nt.get_etud_moy_gen(etudid))),
-                        ("moy_promo", scu.fmt_note(nt.moy_moy)),
+                        (
+                            "moy",
+                            scu.fmt_note(
+                                nt.get_etud_moy_gen(etudid), keep_numeric=keep_numeric
+                            ),
+                        ),
+                        (
+                            "moy_promo",
+                            scu.fmt_note(nt.moy_moy, keep_numeric=keep_numeric),
+                        ),
                         ("rang", nt.get_etud_rang(etudid)),
                         ("effectif", len(nt.T)),
                         ("date_debut", s["date_debut"]),
@@ -182,6 +193,7 @@ def _get_etud_info_groupes(group_ids, etat=None):
 
 def formsemestre_poursuite_report(formsemestre_id, fmt="html"):
     """Table avec informations "poursuite" """
+    keep_numeric = fmt in ("xls", "xlsx", "json", "csv")
     sem = sco_formsemestre.get_formsemestre(formsemestre_id)
     etuds = _get_etud_info_groupes([sco_groups.get_default_group(formsemestre_id)])
 
@@ -194,7 +206,7 @@ def formsemestre_poursuite_report(formsemestre_id, fmt="html"):
         etud["_nom_target"] = fiche_url
         etud["_prenom_target"] = fiche_url
         etud["_nom_td_attrs"] = f"""id="{etud['etudid']}" class="etudinfo" """
-        info = etud_get_poursuite_info(sem, etud)
+        info = etud_get_poursuite_info(sem, etud, keep_numeric=keep_numeric)
         idd = _flatten_info(info)
         # On recupere la totalite des UEs dans ids
         for key in idd:
-- 
GitLab