From c84c10ad89e32ca1a089b711c93227542d813c7d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Fri, 25 Aug 2023 17:59:57 +0200 Subject: [PATCH] =?UTF-8?q?Adaptation=20assiduit=C3=A9s=20pour=20nouveau?= =?UTF-8?q?=20codage=20dates=20=C3=A9valuations=20(=C3=A0=20compl=C3=A9ter?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assiduites/pages/etat_absence_date.j2 | 7 +- app/views/assiduites.py | 24 +++--- tests/api/test_api_assiduites.py | 73 +------------------ 3 files changed, 21 insertions(+), 83 deletions(-) diff --git a/app/templates/assiduites/pages/etat_absence_date.j2 b/app/templates/assiduites/pages/etat_absence_date.j2 index 41c99fe3..03aaf5aa 100644 --- a/app/templates/assiduites/pages/etat_absence_date.j2 +++ b/app/templates/assiduites/pages/etat_absence_date.j2 @@ -1,5 +1,6 @@ -

Présence lors de l'évaluation {{eval.title}}

-

Réalisé le {{eval.jour}} de {{eval.heure_debut}} à {{eval.heure_fin}}

+

Présence du groupe {{group_title}} le {{date_debut.strftime("%d/%m/%Y")}} +de {{date_debut.strftime("%H:%M")}} à {{date_fin.strftime("%H:%M")}} +

@@ -7,7 +8,7 @@ Nom diff --git a/app/views/assiduites.py b/app/views/assiduites.py index 0969c4ae..7e8bcd42 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -736,16 +736,13 @@ def visu_assiduites_group(): @scodoc @permission_required(Permission.ScoView) def get_etat_abs_date(): - evaluation = { + infos_date = { "jour": request.args.get("jour"), "heure_debut": request.args.get("heure_debut"), "heure_fin": request.args.get("heure_fin"), "title": request.args.get("desc"), } - date: str = evaluation["jour"] group_ids: list[int] = request.args.get("group_ids", None) - etudiants: list[dict] = [] - if group_ids is None: group_ids = [] else: @@ -760,10 +757,10 @@ def get_etat_abs_date(): ] date_debut = scu.is_iso_formated( - f"{evaluation['jour']}T{evaluation['heure_debut'].replace('h',':')}", True + f"{infos_date['jour']}T{infos_date['heure_debut'].replace('h',':')}", True ) date_fin = scu.is_iso_formated( - f"{evaluation['jour']}T{evaluation['heure_fin'].replace('h',':')}", True + f"{infos_date['jour']}T{infos_date['heure_fin'].replace('h',':')}", True ) assiduites: Assiduite = Assiduite.query.filter( @@ -773,15 +770,20 @@ def get_etat_abs_date(): assiduites, Assiduite, date_debut, date_fin, False ) + etudiants: list[dict] = [] for etud in etuds: assi = assiduites.filter_by(etudid=etud["etudid"]).first() etat = "" - if assi != None and assi.etat != 0: + if assi is not None and assi.etat != 0: etat = scu.EtatAssiduite.inverse().get(assi.etat).name etudiant = { - "nom": f'{etud["nomprenom"]}', + "nom": f"""{etud["nomprenom"]}""", "etat": etat, } @@ -790,7 +792,7 @@ def get_etat_abs_date(): etudiants = list(sorted(etudiants, key=lambda x: x["nom"])) header: str = html_sco_header.sco_header( - page_title=evaluation["title"], + page_title=infos_date["title"], init_qtip=True, ) @@ -799,7 +801,9 @@ def get_etat_abs_date(): render_template( "assiduites/pages/etat_absence_date.j2", etudiants=etudiants, - eval=evaluation, + group_title=groups_infos.groups_titles, + date_debut=date_debut, + date_fin=date_fin, ), html_sco_header.sco_footer(), ).build() diff --git a/tests/api/test_api_assiduites.py b/tests/api/test_api_assiduites.py index 6c346ac4..895d4c04 100644 --- a/tests/api/test_api_assiduites.py +++ b/tests/api/test_api_assiduites.py @@ -13,6 +13,9 @@ from tests.api.setup_test_api import ( APIError, api_headers, api_admin_headers, + check_failure_get, + check_failure_post, + check_fields, ) ETUDID = 1 @@ -44,76 +47,6 @@ COUNT_FIELDS = {"compte": int, "journee": int, "demi": int, "heure": float} TO_REMOVE = [] -def check_fields(data: dict, fields: dict = None): - """ - Cette fonction permet de vérifier que le dictionnaire data - contient les bonnes clés et les bons types de valeurs. - - Args: - data (dict): un dictionnaire (json de retour de l'api) - fields (dict, optional): Un dictionnaire représentant les clés et les types d'une réponse. - """ - if fields is None: - fields = ASSIDUITES_FIELDS - assert set(data.keys()) == set(fields.keys()) - for key in data: - if key in ("moduleimpl_id", "desc", "user_id", "external_data"): - assert ( - isinstance(data[key], fields[key]) or data[key] is None - ), f"error [{key}:{type(data[key])}, {data[key]}, {fields[key]}]" - else: - assert isinstance( - data[key], fields[key] - ), f"error [{key}:{type(data[key])}, {data[key]}, {fields[key]}]" - - -def check_failure_get(path: str, headers: dict, err: str = None): - """ - Cette fonction vérifiée que la requête GET renvoie bien un 404 - - Args: - path (str): la route de l'api - headers (dict): le token d'auth de l'api - err (str, optional): L'erreur qui est sensée être fournie par l'api. - - Raises: - APIError: Une erreur car la requête a fonctionné (mauvais comportement) - """ - - try: - GET(path=path, headers=headers) - # ^ Renvoi un 404 - except APIError as api_err: - if err is not None: - assert api_err.payload["message"] == err - else: - raise APIError("Le GET n'aurait pas du fonctionner") - - -def check_failure_post(path: str, headers: dict, data: dict, err: str = None): - """ - Cette fonction vérifiée que la requête POST renvoie bien un 404 - - Args: - path (str): la route de l'api - headers (dict): le token d'auth - data (dict): un dictionnaire (json) à envoyer - err (str, optional): L'erreur qui est sensée être fournie par l'api. - - Raises: - APIError: Une erreur car la requête a fonctionné (mauvais comportement) - """ - - try: - data = POST_JSON(path=path, headers=headers, data=data) - # ^ Renvoi un 404 - except APIError as api_err: - if err is not None: - assert api_err.payload["message"] == err - else: - raise APIError("Le GET n'aurait pas du fonctionner") - - def create_data(etat: str, day: str, module: int = None, desc: str = None): """ Permet de créer un dictionnaire assiduité
- Assiduité + Présence