ajustement de la route reset_etud_abs

This commit is contained in:
leonard_montalbano 2022-05-24 12:12:39 +02:00
parent e6ee7802d6
commit fc4348d150
1 changed files with 31 additions and 33 deletions

View File

@ -176,51 +176,38 @@ def abs_groupe_etat(group_id: int, date_debut=None, date_fin=None):
@bp.route( @bp.route(
"/absences/formsemestre/<int:formsemestre_id>/etudid/<int:etudid>/set_etud_abs", "/absences/etudid/<int:etudid>/list_abs/<str:list_abs>/reset_etud_abs",
methods=["GET"], methods=["POST"],
defaults={"just_or_not": 0}, defaults={"just_or_not": 0},
) )
@bp.route( @bp.route(
"/absences/formsemestre/<int:formsemestre_id>/etudid/<int:etudid>/set_etud_abs/only_not_just", "/absences/etudid/<int:etudid>/list_abs/<str:list_abs>/reset_etud_abs/only_not_just",
methods=["GET"], methods=["POST"],
defaults={"just_or_not": 1}, defaults={"just_or_not": 1},
) )
@bp.route( @bp.route(
"/absences/formsemestre/<int:formsemestre_id>/etudid/<int:etudid>/set_etud_abs/only_just", "/absences/etudid/<int:etudid>/list_abs/<str:list_abs>/reset_etud_abs/only_just",
methods=["GET"], methods=["POST"],
defaults={"just_or_not": 2}, defaults={"just_or_not": 2},
) )
@token_auth.login_required @token_auth.login_required
@token_permission_required(Permission.APIView) @token_permission_required(Permission.APIAbsChange)
def set_formsemestre_etud_abs(formsemestre_id: int, etudid: int, just_or_not: int = 0): 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. 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) (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 etudid : l'id d'un étudiant
list_abs : json d'absences
Exemple de résultat : 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)
"matin": true,
"estabs": true,
"estjust": true,
"description": "",
"begin": "2022-04-15 08:00:00",
"end": "2022-04-15 11:59:59"
},
...
]
""" """
formsemestre = FormSemestre.query.filter_by(id=formsemestre_id).first_or_404() # Toutes les absences
date_debut = formsemestre.date_debut
date_fin = formsemestre.date_fin
list_abs = list_abs_date(etudid, date_debut, date_fin)
if just_or_not == 0: if just_or_not == 0:
# suppression des absences et justificatif déjà existant pour éviter les doublons
for abs in list_abs: for abs in list_abs:
# Récupération de la date au format iso
jour = abs["jour"].isoformat() jour = abs["jour"].isoformat()
if abs["matin"] is True: if abs["matin"] is True:
annule_absence(etudid, jour, 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: else:
annule_absence(etudid, jour, False) annule_absence(etudid, jour, False)
annule_justif(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: elif just_or_not == 1:
list_abs_not_just = [] list_abs_not_just = []
# Trie des absences justifiées
for abs in list_abs: for abs in list_abs:
if abs["estjust"] is False: if abs["estjust"] is False:
list_abs_not_just.append(abs) list_abs_not_just.append(abs)
# suppression des absences et justificatif déjà existant pour éviter les doublons
for abs in list_abs: for abs in list_abs:
# Récupération de la date au format iso
jour = abs["jour"].isoformat() jour = abs["jour"].isoformat()
if abs["matin"] is True: if abs["matin"] is True:
annule_absence(etudid, jour, 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: else:
annule_absence(etudid, jour, False) annule_absence(etudid, jour, False)
annule_justif(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: elif just_or_not == 2:
list_abs_just = [] list_abs_just = []
# Trie des absences non justifiées
for abs in list_abs: for abs in list_abs:
if abs["estjust"] is True: if abs["estjust"] is True:
list_abs_just.append(abs) list_abs_just.append(abs)
# suppression des absences et justificatif déjà existant pour éviter les doublons
for abs in list_abs: for abs in list_abs:
# Récupération de la date au format iso
jour = abs["jour"].isoformat() jour = abs["jour"].isoformat()
if abs["matin"] is True: if abs["matin"] is True:
annule_absence(etudid, jour, 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: else:
annule_absence(etudid, jour, False) annule_absence(etudid, jour, False)
annule_justif(etudid, jour, False) annule_justif(etudid, jour, False)
# Ajout de la liste d'absences en base
add_abslist(list_abs_just) add_abslist(list_abs_just)
# return jsonify(res)