diff --git a/app/api/absences.py b/app/api/absences.py index b231575b..a9556d85 100644 --- a/app/api/absences.py +++ b/app/api/absences.py @@ -176,51 +176,38 @@ def abs_groupe_etat(group_id: int, date_debut=None, date_fin=None): @bp.route( - "/absences/formsemestre//etudid//set_etud_abs", - methods=["GET"], + "/absences/etudid//list_abs//reset_etud_abs", + methods=["POST"], defaults={"just_or_not": 0}, ) @bp.route( - "/absences/formsemestre//etudid//set_etud_abs/only_not_just", - methods=["GET"], + "/absences/etudid//list_abs//reset_etud_abs/only_not_just", + methods=["POST"], defaults={"just_or_not": 1}, ) @bp.route( - "/absences/formsemestre//etudid//set_etud_abs/only_just", - methods=["GET"], + "/absences/etudid//list_abs//reset_etud_abs/only_just", + methods=["POST"], defaults={"just_or_not": 2}, ) @token_auth.login_required -@token_permission_required(Permission.APIView) -def set_formsemestre_etud_abs(formsemestre_id: int, etudid: int, just_or_not: int = 0): +@token_permission_required(Permission.APIAbsChange) +def reset_etud_abs(etudid: int, list_abs, just_or_not: int = 0): """ Set la liste des absences d'un étudiant sur tout un semestre. (les absences existant pour cet étudiant sur cette période sont effacées) - formsemestre_id : l'id d'un semestre etudid : l'id d'un étudiant - - Exemple de résultat : - [ - { - "matin": true, - "estabs": true, - "estjust": true, - "description": "", - "begin": "2022-04-15 08:00:00", - "end": "2022-04-15 11:59:59" - }, - ... - ] + list_abs : json d'absences + just_or_not : 0 (pour les absences justifiées et non justifiées), + 1 (pour les absences justifiées), + 2 (pour les absences non justifiées) """ - formsemestre = FormSemestre.query.filter_by(id=formsemestre_id).first_or_404() - date_debut = formsemestre.date_debut - date_fin = formsemestre.date_fin - - list_abs = list_abs_date(etudid, date_debut, date_fin) - + # Toutes les absences if just_or_not == 0: + # suppression des absences et justificatif déjà existant pour éviter les doublons for abs in list_abs: + # Récupération de la date au format iso jour = abs["jour"].isoformat() if abs["matin"] is True: annule_absence(etudid, jour, True) @@ -228,15 +215,20 @@ def set_formsemestre_etud_abs(formsemestre_id: int, etudid: int, just_or_not: in else: annule_absence(etudid, jour, False) annule_justif(etudid, jour, False) - add_abslist(list_abs) - # return jsonify(list_abs) + # Ajout de la liste d'absences en base + add_abslist(list_abs) + + # Uniquement les absences justifiées elif just_or_not == 1: list_abs_not_just = [] + # Trie des absences justifiées for abs in list_abs: if abs["estjust"] is False: list_abs_not_just.append(abs) + # suppression des absences et justificatif déjà existant pour éviter les doublons for abs in list_abs: + # Récupération de la date au format iso jour = abs["jour"].isoformat() if abs["matin"] is True: annule_absence(etudid, jour, True) @@ -244,15 +236,20 @@ def set_formsemestre_etud_abs(formsemestre_id: int, etudid: int, just_or_not: in else: annule_absence(etudid, jour, False) annule_justif(etudid, jour, False) - add_abslist(list_abs_not_just) - # return jsonify(res) + # Ajout de la liste d'absences en base + add_abslist(list_abs_not_just) + + # Uniquement les absences non justifiées elif just_or_not == 2: list_abs_just = [] + # Trie des absences non justifiées for abs in list_abs: if abs["estjust"] is True: list_abs_just.append(abs) + # suppression des absences et justificatif déjà existant pour éviter les doublons for abs in list_abs: + # Récupération de la date au format iso jour = abs["jour"].isoformat() if abs["matin"] is True: annule_absence(etudid, jour, True) @@ -260,5 +257,6 @@ def set_formsemestre_etud_abs(formsemestre_id: int, etudid: int, just_or_not: in else: annule_absence(etudid, jour, False) annule_justif(etudid, jour, False) + + # Ajout de la liste d'absences en base add_abslist(list_abs_just) - # return jsonify(res)