From 6c850d26659b83792d729614b0fc7e5c2dd7066f Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet <emmanuel.viennet@gmail.com>
Date: Fri, 13 Jan 2023 19:50:24 -0300
Subject: [PATCH] =?UTF-8?q?Affichage=20table=20recap=20BUT=20si=20pas=20de?=
 =?UTF-8?q?=20moyenne=20g=C3=A9n=C3=A9rale:=20pas=20de=20rangs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/comp/res_common.py     | 49 +++++++++++++++++++++-----------------
 app/models/formsemestre.py |  1 +
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/app/comp/res_common.py b/app/comp/res_common.py
index 628db367b..c45651790 100644
--- a/app/comp/res_common.py
+++ b/app/comp/res_common.py
@@ -519,10 +519,11 @@ class ResultatsSemestre(ResultatsCache):
                 row, "code_nip", "code_nip", etud.code_nip or "", "codes", idx
             )
             # --- Rang
-            idx = add_cell(
-                row, "rang", "Rg", self.etud_moy_gen_ranks[etudid], "rang", idx
-            )
-            row["_rang_order"] = f"{self.etud_moy_gen_ranks_int[etudid]:05d}"
+            if not self.formsemestre.block_moyenne_generale:
+                idx = add_cell(
+                    row, "rang", "Rg", self.etud_moy_gen_ranks[etudid], "rang", idx
+                )
+                row["_rang_order"] = f"{self.etud_moy_gen_ranks_int[etudid]:05d}"
             # --- Identité étudiant
             idx = add_cell(
                 row, "civilite_str", "Civ.", etud.civilite_str, "identite_detail", idx
@@ -548,23 +549,24 @@ class ResultatsSemestre(ResultatsCache):
 
             idx = 30  # début des colonnes de notes
             # --- Moyenne générale
-            moy_gen = self.etud_moy_gen.get(etudid, False)
-            note_class = ""
-            if moy_gen is False:
-                moy_gen = NO_NOTE
-            elif isinstance(moy_gen, float) and moy_gen < barre_moy:
-                note_class = " moy_ue_warning"  # en rouge
-            idx = add_cell(
-                row,
-                "moy_gen",
-                "Moy",
-                fmt_note(moy_gen),
-                "col_moy_gen" + note_class,
-                idx,
-            )
-            titles_bot["_moy_gen_target_attrs"] = (
-                'title="moyenne indicative"' if self.is_apc else ""
-            )
+            if not self.formsemestre.block_moyenne_generale:
+                moy_gen = self.etud_moy_gen.get(etudid, False)
+                note_class = ""
+                if moy_gen is False:
+                    moy_gen = NO_NOTE
+                elif isinstance(moy_gen, float) and moy_gen < barre_moy:
+                    note_class = " moy_ue_warning"  # en rouge
+                idx = add_cell(
+                    row,
+                    "moy_gen",
+                    "Moy",
+                    fmt_note(moy_gen),
+                    "col_moy_gen" + note_class,
+                    idx,
+                )
+                titles_bot["_moy_gen_target_attrs"] = (
+                    'title="moyenne indicative"' if self.is_apc else ""
+                )
             # --- Moyenne d'UE
             nb_ues_validables, nb_ues_warning = 0, 0
             for ue in ues_sans_bonus:
@@ -733,7 +735,10 @@ class ResultatsSemestre(ResultatsCache):
         self._recap_add_admissions(rows, titles)
 
         # tri par rang croissant
-        rows.sort(key=lambda e: e["_rang_order"])
+        if not self.formsemestre.block_moyenne_generale:
+            rows.sort(key=lambda e: e["_rang_order"])
+        else:
+            rows.sort(key=lambda e: e["_ues_validables_order"], reverse=True)
 
         # INFOS POUR FOOTER
         bottom_infos = self._recap_bottom_infos(ues_sans_bonus, modimpl_ids, fmt_note)
diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py
index 6654d691f..55e60cc06 100644
--- a/app/models/formsemestre.py
+++ b/app/models/formsemestre.py
@@ -80,6 +80,7 @@ class FormSemestre(db.Model):
     block_moyenne_generale = db.Column(
         db.Boolean(), nullable=False, default=False, server_default="false"
     )
+    "Si vrai, la moyenne générale indicative BUT n'est pas calculée"
     # semestres decales (pour gestion jurys):
     gestion_semestrielle = db.Column(
         db.Boolean(), nullable=False, default=False, server_default="false"
-- 
GitLab