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