From c0253bd05d324fcba1f461592dc1975bdf2c3ab8 Mon Sep 17 00:00:00 2001 From: Iziram Date: Wed, 22 Nov 2023 16:49:13 +0100 Subject: [PATCH] Assiduites : WIP tableaux options --- app/tables/liste_assiduites.py | 14 +++++-- app/templates/assiduites/pages/test_assi.j2 | 31 ++++++++++++++++ app/views/assiduites.py | 41 +++++++++++++++++---- 3 files changed, 74 insertions(+), 12 deletions(-) diff --git a/app/tables/liste_assiduites.py b/app/tables/liste_assiduites.py index 89c030f426..329b43f4a6 100644 --- a/app/tables/liste_assiduites.py +++ b/app/tables/liste_assiduites.py @@ -16,13 +16,14 @@ class ListeAssiJusti(tb.Table): L'affichage par défaut se fait par ordre de date de fin décroissante. """ - NB_PAR_PAGE: int = 50 + NB_PAR_PAGE: int = 2 def __init__( self, *etudiants: tuple[Identite], filtre: "Filtre" = None, page: int = 1, + nb_par_page: int = None, **kwargs, ) -> None: """ @@ -36,7 +37,12 @@ class ListeAssiJusti(tb.Table): # Gestion du filtre, par défaut un filtre vide self.filtre = filtre if filtre is not None else Filtre() # Gestion de la pagination (par défaut page 1) - self.page = page + self.page: int = page + self.nb_par_page: int = ( + nb_par_page if nb_par_page is not None else ListeAssiJusti.NB_PAR_PAGE + ) + + self.total_page: int = None # les lignes du tableau self.rows: list["RowAssiJusti"] = [] @@ -80,7 +86,7 @@ class ListeAssiJusti(tb.Table): # Paginer la requête pour ne pas envoyer trop d'informations au client pagination: Pagination = self.paginer(query_finale) - + self.total_pages: int = pagination.pages # Générer les lignes de la page for ligne in pagination.items: row: RowAssiJusti = self.row_class(self, ligne._asdict()) @@ -106,7 +112,7 @@ class ListeAssiJusti(tb.Table): résultats paginés. """ return query.paginate( - page=self.page, per_page=ListeAssiJusti.NB_PAR_PAGE, error_out=False + page=self.page, per_page=self.nb_par_page, error_out=False ) def joindre(self, query_assiduite: Query = None, query_justificatif: Query = None): diff --git a/app/templates/assiduites/pages/test_assi.j2 b/app/templates/assiduites/pages/test_assi.j2 index 3291c18959..8b0cf85977 100644 --- a/app/templates/assiduites/pages/test_assi.j2 +++ b/app/templates/assiduites/pages/test_assi.j2 @@ -7,6 +7,37 @@ {% block app_content %} + + Options +
+ + {% if show_pres %} + + {% else %} + + {% endif %} + + + {% if show_reta %} + + {% else %} + + {% endif %} +
+ + + + + + +
+ +
+
{{tableau | safe}} diff --git a/app/views/assiduites.py b/app/views/assiduites.py index 74215069b3..0a6f12c640 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -327,7 +327,6 @@ def signal_assiduites_etud(): ), assi_morning=ScoDocSiteConfig.get("assi_morning_time", "08:00"), assi_evening=ScoDocSiteConfig.get("assi_afternoon_time", "18:00"), - saisie_eval=saisie_eval, date_deb=date_deb, date_fin=date_fin, @@ -1045,18 +1044,39 @@ def visu_assi_group(): ) -@bp.route("/Test") +@bp.route("/testTableau") @scodoc @permission_required(Permission.ScoView) -def test(): +def testTableau(): """Visualisation de l'assiduité d'un groupe entre deux dates""" - fmt = request.args.get("fmt", "html") - etudid = request.args.get("etudid", 18114) + etudid = request.args.get( + "etudid", 18114 + ) # TODO retirer la valeur par défaut de test + + fmt = request.args.get("fmt", "html") + show_pres: bool | str = request.args.get("show_pres", False) + show_reta: bool | str = request.args.get("show_reta", False) + + nb_ligne_page: int = request.args.get("nb_ligne_page") + # Vérification de nb_ligne_page + try: + nb_ligne_page: int = int(nb_ligne_page) + except (ValueError, TypeError): + nb_ligne_page = None + + page_number: int = request.args.get("n_page", 1) + # Vérification de page_number + try: + page_number: int = int(page_number) + except (ValueError, TypeError): + page_number = 1 from app.tables.liste_assiduites import ListeAssiJusti - table: ListeAssiJusti = ListeAssiJusti(Identite.get_etud(etudid)) + table: ListeAssiJusti = ListeAssiJusti( + Identite.get_etud(etudid), page=page_number, nb_par_page=nb_ligne_page + ) if fmt.startswith("xls"): return scu.send_file( @@ -1071,6 +1091,11 @@ def test(): sco=ScoData(), tableau=table.html(), title=f"Test tableau", + total_pages=table.total_pages, + page_number=page_number, + show_pres=show_pres, + show_reta=show_reta, + nb_ligne_page=nb_ligne_page, ) @@ -1354,10 +1379,10 @@ def generate_bul_list(etud: Identite, semestre: FormSemestre) -> str: ) -@bp.route("/test", methods=["GET", "POST"]) +@bp.route("/testDate", methods=["GET", "POST"]) @scodoc @permission_required(Permission.ScoView) -def test(): +def testDateutils(): """XXX fonction de test a retirer""" if request.method == "POST": print("test date_utils : ", request.form)