From 4f71575154c9dc58a05d6eb6c79816b60242cb55 Mon Sep 17 00:00:00 2001 From: iziram Date: Thu, 23 Feb 2023 09:30:51 +0100 Subject: [PATCH] assiduites : fin grosses modifs --- app/api/assiduites.py | 12 +++++++++--- app/api/justificatifs.py | 19 +++++++++++++++++-- app/scodoc/sco_assiduites.py | 11 +++++++---- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/app/api/assiduites.py b/app/api/assiduites.py index 459ea54da..45f633675 100644 --- a/app/api/assiduites.py +++ b/app/api/assiduites.py @@ -484,6 +484,14 @@ def assiduite_edit(assiduite_id: int): if desc is not False: assiduite_unique.desc = desc + # Cas 4 : est_just + est_just = data.get("est_just") + if est_just is not None: + if not isinstance(est_just, bool): + errors.append("param 'est_just' : booléen non reconnu") + else: + assiduite_unique.est_just = est_just + if errors: err: str = ", ".join(errors) return json_error(404, err) @@ -633,8 +641,6 @@ def _filter_manager(requested, assiduites_query: Assiduite): user_id = requested.args.get("user_id", False) if user_id is not False: - assiduites_query: Assiduite = scass.filter_assiduites_by_user_id( - assiduites_query, user_id - ) + assiduites_query: Assiduite = scass.filter_by_user_id(assiduites_query, user_id) return assiduites_query diff --git a/app/api/justificatifs.py b/app/api/justificatifs.py index 3d90cc87e..7017ca1b4 100644 --- a/app/api/justificatifs.py +++ b/app/api/justificatifs.py @@ -18,6 +18,7 @@ from app.api import api_web_bp from app.api import get_model_api_object from app.decorators import permission_required, scodoc from app.models import Identite, Justificatif +from app.models.assiduites import compute_assiduites_justified from app.scodoc.sco_archives_justificatifs import JustificatifArchiver from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.sco_permissions import Permission @@ -79,6 +80,9 @@ def justificatifs(etudid: int = None, with_query: bool = False): dont la date de fin est inférieure ou égale à la valeur donnée): query?date_fin=[- date au format iso -] ex: query?date_fin=2022-11-03T10:00+01:00 + user_id (l'id de l'auteur du justificatif) + query?user_id=[int] + ex query?user_id=3 """ query = Identite.query.filter_by(id=etudid) @@ -140,7 +144,7 @@ def justif_create(etudid: int = None): errors[i] = obj else: success[i] = obj - + compute_assiduites_justified(Justificatif.query.filter_by(etudid=etudid), True) return jsonify({"errors": errors, "success": success}) @@ -198,6 +202,7 @@ def _create_singular( db.session.add(nouv_justificatif) db.session.commit() + return ( 200, { @@ -290,11 +295,15 @@ def justif_edit(justif_id: int): db.session.add(justificatif_unique) db.session.commit() + return jsonify( { "couverture": { "avant": avant_ids, - "après": scass.justifies(justificatif_unique), + "après": compute_assiduites_justified( + Justificatif.query.filter_by(etudid=justificatif_unique.etudid), + True, + ), } } ) @@ -573,4 +582,10 @@ def _filter_manager(requested, justificatifs_query): justificatifs_query, Justificatif, deb, fin ) + user_id = requested.args.get("user_id", False) + if user_id is not False: + justificatif_query: Justificatif = scass.filter_by_user_id( + justificatif_query, user_id + ) + return justificatifs_query diff --git a/app/scodoc/sco_assiduites.py b/app/scodoc/sco_assiduites.py index 3d8aaac32..6c443fca4 100644 --- a/app/scodoc/sco_assiduites.py +++ b/app/scodoc/sco_assiduites.py @@ -196,7 +196,7 @@ def get_assiduites_stats( elif key == "est_just": assiduites = filter_assiduites_by_est_just(assiduites, filtered[key]) elif key == "user_id": - assiduites = filter_assiduites_by_user_id(assiduites, filtered[key]) + assiduites = filter_by_user_id(assiduites, filtered[key]) if (deb, fin) != (None, None): assiduites = filter_by_date(assiduites, Assiduite, deb, fin) @@ -232,11 +232,14 @@ def filter_assiduites_by_est_just( return assiduites.filter_by(est_just=est_just) -def filter_assiduites_by_user_id(assiduites: Assiduite, user_id: int) -> Justificatif: +def filter_by_user_id( + collection: Assiduite or Justificatif, + user_id: int, +) -> Justificatif: """ - Filtrage d'une collection d'assiduites en fonction de l'user_id + Filtrage d'une collection en fonction de l'user_id """ - return assiduites.filter_by(user_id=user_id) + return collection.filter_by(user_id=user_id) def filter_by_date(