From e963ffc02ec360e9efb5d2e5da507860c903bad2 Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Fri, 14 Feb 2025 11:50:55 +0100
Subject: [PATCH 1/5] test modif formsemestre page

---
 app/scodoc/sco_formsemestre_status.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index f634d73b..eda1d22c 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -889,6 +889,12 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
             }">Ajouter une partition</a>"""
         )
 
+        autres_liens.append(
+            f"""<a class="stdlink"
+            title="EH.OH"">
+            {formsemestre.etapes}</a>"""
+        )
+
     # --- Formulaire importation Assiduité excel (si autorisé)
     if current_user.has_permission(Permission.AbsChange) and not disable_abs:
         autres_liens.append(
-- 
GitLab


From b55ad79bf0e70a9c83c40523b38551120eeb7723 Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Tue, 25 Feb 2025 14:45:43 +0100
Subject: [PATCH 2/5] Test ajout lien dans formsemestre_status

---
 app/scodoc/sco_formsemestre_status.py | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index eda1d22c..f634d73b 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -889,12 +889,6 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
             }">Ajouter une partition</a>"""
         )
 
-        autres_liens.append(
-            f"""<a class="stdlink"
-            title="EH.OH"">
-            {formsemestre.etapes}</a>"""
-        )
-
     # --- Formulaire importation Assiduité excel (si autorisé)
     if current_user.has_permission(Permission.AbsChange) and not disable_abs:
         autres_liens.append(
-- 
GitLab


From 4f8db5256736170b01e254068005e71a0929b671 Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Tue, 25 Feb 2025 15:48:51 +0100
Subject: [PATCH 3/5] Ajout d'un tableu avec le contenu des tables contenant
 une colonne contenant "apo"

---
 app/scodoc/sco_formsemestre_status.py | 69 ++++++++++++++++++++++++++-
 1 file changed, 67 insertions(+), 2 deletions(-)

diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index f634d73b..05d5f74f 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -29,6 +29,9 @@
 
 import datetime
 
+from app import db
+from sqlalchemy import text
+
 from flask import current_app
 from flask import g
 from flask import request
@@ -888,6 +891,13 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
                     edit_partition=1)
             }">Ajouter une partition</a>"""
         )
+    
+    autres_liens.append(
+            f"""<a class="stdlink"
+            title="BLABLABLA."
+            href="https://moodle.univ-lille.fr/">Test ajout lien</a>"""
+        )
+
 
     # --- Formulaire importation Assiduité excel (si autorisé)
     if current_user.has_permission(Permission.AbsChange) and not disable_abs:
@@ -978,6 +988,8 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
              formation.acronyme}, v{formation.version}">{formation.titre}</a>
         """,
     ]
+
+    
     if formsemestre.semestre_id >= 0:
         H.append(f", {parcours.SESSION_NAME} {formsemestre.semestre_id}")
     if formsemestre.modalite:
@@ -1022,6 +1034,8 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
         )
     H.append("</td></tr>")
     H.append("</table>")
+
+
     warnings = []
     if evals["attente"]:
         warnings.append(
@@ -1042,8 +1056,56 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
 
     return "".join(H)
 
+queries = [
+    (text("SELECT elt_sem_apo, elt_annee_apo, elt_passage_apo FROM notes_formsemestre WHERE elt_sem_apo IS NOT NULL OR elt_annee_apo IS NOT NULL OR elt_passage_apo IS NOT NULL"), "notes_formsemestre"),
+    (text("SELECT etape_apo FROM notes_formsemestre_etapes WHERE etape_apo IS NOT NULL"), "notes_formsemestre_etapes"),
+    (text("SELECT code_apogee FROM notes_modules WHERE code_apogee IS NOT NULL"), "notes_modules"),
+    (text("SELECT code_apogee FROM notes_moduleimpl WHERE code_apogee IS NOT NULL"), "notes_moduleimpl"),
+    (text("SELECT code_apogee, titre FROM notes_ue WHERE code_apogee IS NOT NULL"), "notes_ue"),
+    (text("SELECT code_apogee_rcue, titre FROM notes_ue WHERE code_apogee_rcue IS NOT NULL"), "notes_ue")
+]
+
+def get_code_apo_results():
+    results = []
+    for query, table_name in queries:
+        result = db.session.execute(query).fetchall()
+        results.append((table_name, result))
+    return results
+
+def generate_html_table():
+    results = get_code_apo_results()
+    html_content = """
+    <table>
+        <thead>
+            <tr>
+                <th>Code Apogée</th>
+                <th>Table</th>
+                <th>Valeurs</th>
+            </tr>
+        </thead>
+        <tbody>
+    """
+
+    for table_name, rows in results:
+        for row in rows:
+            html_content += f"""
+            <tr class="formsemestre_status_ue">
+                <td colspan="5">
+                    <span class="status_module_ue">{row}</span>
+                </td>
+                <td colspan="5">
+                    <span class="status_module_ue">{table_name}</span>
+                </td>
+            </tr>
+            """
+    html_content += """
+        </tbody>
+    </table>
+    """
+    return html_content
 
 def formsemestre_status(formsemestre_id=None, check_parcours=True):
+
     """Tableau de bord semestre HTML"""
     # porté du DTML
     if formsemestre_id is not None and not isinstance(formsemestre_id, int):
@@ -1137,10 +1199,10 @@ def formsemestre_status(formsemestre_id=None, check_parcours=True):
                 <td colspan="5">
                     <span class="status_module_cat">SAÉs</span>
                 </td>
-            </tr>""",
+            </tr> """, 
             formsemestre_tableau_modules(
                 saes, nt, formsemestre, can_edit=can_edit, show_ues=False
-            ),
+            ),generate_html_table()
         ]
         if autres:
             H += [
@@ -1210,6 +1272,7 @@ _TABLEAU_MODULES_HEAD = """
 _TABLEAU_MODULES_FOOT = """</table>"""
 
 
+
 def formsemestre_tableau_modules(
     modimpls: list[ModuleImpl],
     nt,
@@ -1504,3 +1567,5 @@ def formsemestre_note_etuds_sans_notes(
         sco=ScoData(formsemestre=formsemestre, etud=etud),
         title=f"{formsemestre.sem_modalite()} {formsemestre.titre_annee()}",
     )
+
+
-- 
GitLab


From 403cfd4b8518e551ede5c56804a3b38d969f0042 Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Tue, 25 Feb 2025 16:12:08 +0100
Subject: [PATCH 4/5] =?UTF-8?q?reformatage=20du=20tableau=20de=20code=20ap?=
 =?UTF-8?q?og=C3=A9e=20qui=20affiche=20le=20code,=20la=20table=20et=20le?=
 =?UTF-8?q?=20titre?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/scodoc/sco_formsemestre_status.py | 28 ++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index 05d5f74f..eebf29a1 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -1057,14 +1057,17 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
     return "".join(H)
 
 queries = [
-    (text("SELECT elt_sem_apo, elt_annee_apo, elt_passage_apo FROM notes_formsemestre WHERE elt_sem_apo IS NOT NULL OR elt_annee_apo IS NOT NULL OR elt_passage_apo IS NOT NULL"), "notes_formsemestre"),
-    (text("SELECT etape_apo FROM notes_formsemestre_etapes WHERE etape_apo IS NOT NULL"), "notes_formsemestre_etapes"),
-    (text("SELECT code_apogee FROM notes_modules WHERE code_apogee IS NOT NULL"), "notes_modules"),
-    (text("SELECT code_apogee FROM notes_moduleimpl WHERE code_apogee IS NOT NULL"), "notes_moduleimpl"),
-    (text("SELECT code_apogee, titre FROM notes_ue WHERE code_apogee IS NOT NULL"), "notes_ue"),
-    (text("SELECT code_apogee_rcue, titre FROM notes_ue WHERE code_apogee_rcue IS NOT NULL"), "notes_ue")
+    (text("SELECT elt_sem_apo, titre FROM notes_formsemestre WHERE elt_sem_apo IS NOT NULL"), "SEMESTRE"),
+    (text("SELECT elt_annee_apo, titre FROM notes_formsemestre WHERE elt_annee_apo IS NOT NULL"), "ANNEE"),
+    (text("SELECT elt_passage_apo, titre FROM notes_formsemestre WHERE elt_passage_apo IS NOT NULL"), "PASSAGE"),
+    #(text("SELECT etape_apo FROM notes_formsemestre_etapes WHERE etape_apo IS NOT NULL"), "ETAPES"),
+    (text("SELECT code_apogee, titre FROM notes_modules WHERE code_apogee IS NOT NULL"), "MODULE"),
+    #(text("SELECT code_apogee FROM notes_moduleimpl WHERE code_apogee IS NOT NULL"), "MODULE IMP"),
+    (text("SELECT code_apogee, titre FROM notes_ue WHERE code_apogee IS NOT NULL"), "UE"),
+    (text("SELECT code_apogee_rcue, titre FROM notes_ue WHERE code_apogee_rcue IS NOT NULL"), "UE")
 ]
 
+
 def get_code_apo_results():
     results = []
     for query, table_name in queries:
@@ -1080,7 +1083,7 @@ def generate_html_table():
             <tr>
                 <th>Code Apogée</th>
                 <th>Table</th>
-                <th>Valeurs</th>
+                <th>Titre</th>
             </tr>
         </thead>
         <tbody>
@@ -1088,14 +1091,12 @@ def generate_html_table():
 
     for table_name, rows in results:
         for row in rows:
+            code_apogee, titre = row
             html_content += f"""
             <tr class="formsemestre_status_ue">
-                <td colspan="5">
-                    <span class="status_module_ue">{row}</span>
-                </td>
-                <td colspan="5">
-                    <span class="status_module_ue">{table_name}</span>
-                </td>
+                <td>{code_apogee}</td>
+                <td>{table_name}</td>
+                <td>{titre}</td>
             </tr>
             """
     html_content += """
@@ -1104,6 +1105,7 @@ def generate_html_table():
     """
     return html_content
 
+
 def formsemestre_status(formsemestre_id=None, check_parcours=True):
 
     """Tableau de bord semestre HTML"""
-- 
GitLab


From c9a47edb729d17aab1070bb4195b0bf31a616bd3 Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Fri, 28 Feb 2025 11:35:52 +0100
Subject: [PATCH 5/5] ajout filtrage par semestre avec une colonne code, type,
 nom

---
 app/scodoc/sco_formsemestre_status.py | 53 ++++++++++++++-------------
 1 file changed, 27 insertions(+), 26 deletions(-)

diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index eebf29a1..5a2a0c06 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -891,12 +891,6 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
                     edit_partition=1)
             }">Ajouter une partition</a>"""
         )
-    
-    autres_liens.append(
-            f"""<a class="stdlink"
-            title="BLABLABLA."
-            href="https://moodle.univ-lille.fr/">Test ajout lien</a>"""
-        )
 
 
     # --- Formulaire importation Assiduité excel (si autorisé)
@@ -1056,34 +1050,35 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
 
     return "".join(H)
 
-queries = [
-    (text("SELECT elt_sem_apo, titre FROM notes_formsemestre WHERE elt_sem_apo IS NOT NULL"), "SEMESTRE"),
-    (text("SELECT elt_annee_apo, titre FROM notes_formsemestre WHERE elt_annee_apo IS NOT NULL"), "ANNEE"),
-    (text("SELECT elt_passage_apo, titre FROM notes_formsemestre WHERE elt_passage_apo IS NOT NULL"), "PASSAGE"),
-    #(text("SELECT etape_apo FROM notes_formsemestre_etapes WHERE etape_apo IS NOT NULL"), "ETAPES"),
-    (text("SELECT code_apogee, titre FROM notes_modules WHERE code_apogee IS NOT NULL"), "MODULE"),
-    #(text("SELECT code_apogee FROM notes_moduleimpl WHERE code_apogee IS NOT NULL"), "MODULE IMP"),
-    (text("SELECT code_apogee, titre FROM notes_ue WHERE code_apogee IS NOT NULL"), "UE"),
-    (text("SELECT code_apogee_rcue, titre FROM notes_ue WHERE code_apogee_rcue IS NOT NULL"), "UE")
-]
 
 
-def get_code_apo_results():
+
+def get_code_apo_results(formsemestreID):
+    queries = [
+        (text("SELECT elt_sem_apo, titre FROM notes_formsemestre WHERE elt_sem_apo IS NOT NULL AND semestre_id = :semestre_id"), "SEMESTRE"),
+        (text("SELECT elt_annee_apo, titre FROM notes_formsemestre WHERE elt_annee_apo IS NOT NULL AND semestre_id = :semestre_id"), "ANNEE"),
+        (text("SELECT elt_passage_apo, titre FROM notes_formsemestre WHERE elt_passage_apo IS NOT NULL AND semestre_id = :semestre_id"), "PASSAGE"),
+        (text("SELECT code_apogee, titre FROM notes_modules WHERE code_apogee IS NOT NULL AND semestre_id = :semestre_id"), "MODULE"),
+        (text("SELECT code_apogee, titre FROM notes_ue WHERE code_apogee IS NOT NULL AND semestre_idx = :semestre_id"), "UE"), 
+    ]
+
     results = []
     for query, table_name in queries:
-        result = db.session.execute(query).fetchall()
-        results.append((table_name, result))
+        result = db.session.execute(query, params={"semestre_id": formsemestreID}).mappings().fetchall()
+        results.append((table_name, [dict(row) for row in result]))
+
     return results
 
-def generate_html_table():
-    results = get_code_apo_results()
-    html_content = """
+def generate_html_table(formsemestre):
+    results = get_code_apo_results(formsemestre.semestre_id)
+    
+    html_content = f"""
     <table>
         <thead>
             <tr>
                 <th>Code Apogée</th>
-                <th>Table</th>
-                <th>Titre</th>
+                <th>Type</th>
+                <th>Nom</th>
             </tr>
         </thead>
         <tbody>
@@ -1091,7 +1086,9 @@ def generate_html_table():
 
     for table_name, rows in results:
         for row in rows:
-            code_apogee, titre = row
+            code_apogee = row.get("elt_sem_apo") or row.get("elt_annee_apo") or row.get("elt_passage_apo") or row.get("code_apogee")
+            titre = row.get("titre")
+
             html_content += f"""
             <tr class="formsemestre_status_ue">
                 <td>{code_apogee}</td>
@@ -1099,6 +1096,7 @@ def generate_html_table():
                 <td>{titre}</td>
             </tr>
             """
+
     html_content += """
         </tbody>
     </table>
@@ -1106,6 +1104,9 @@ def generate_html_table():
     return html_content
 
 
+
+
+
 def formsemestre_status(formsemestre_id=None, check_parcours=True):
 
     """Tableau de bord semestre HTML"""
@@ -1204,7 +1205,7 @@ def formsemestre_status(formsemestre_id=None, check_parcours=True):
             </tr> """, 
             formsemestre_tableau_modules(
                 saes, nt, formsemestre, can_edit=can_edit, show_ues=False
-            ),generate_html_table()
+            ),generate_html_table(formsemestre)
         ]
         if autres:
             H += [
-- 
GitLab