diff --git a/app/views/assiduites.py b/app/views/assiduites.py index 958a3ae5c..b037b10ac 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -1043,7 +1043,6 @@ def signal_evaluation_abs(etudid: int = None, evaluation_id: int = None): delta: datetime.timedelta = evaluation.date_fin - evaluation.date_debut if delta > datetime.timedelta(days=1): # rediriger vers page saisie - flash("Redirection pour saisie abs") return redirect( url_for( "assiduites.signal_assiduites_etud", @@ -1059,13 +1058,31 @@ def signal_evaluation_abs(etudid: int = None, evaluation_id: int = None): # créer l'assiduité - assiduite_unique: Assiduite = Assiduite.create_assiduite( - etud=etud, - date_debut=scu.localize_datetime(evaluation.date_debut), - date_fin=scu.localize_datetime(evaluation.date_fin), - etat=scu.EtatAssiduite.ABSENT, - moduleimpl=evaluation.moduleimpl, - ) + try: + assiduite_unique: Assiduite = Assiduite.create_assiduite( + etud=etud, + date_debut=scu.localize_datetime(evaluation.date_debut), + date_fin=scu.localize_datetime(evaluation.date_fin), + etat=scu.EtatAssiduite.ABSENT, + moduleimpl=evaluation.moduleimpl, + ) + except ScoValueError as see: + msg: str = see.args[0] + + if "Duplication" in msg: + msg = "Une autre assiduité concerne déjà cette période. En cliquant sur continuer vous serez redirigé vers la page de saisie des assiduités de l'étudiant." + dest: str = url_for( + "assiduites.signal_assiduites_etud", + etudid=etudid, + evaluation_id=evaluation.id, + date_deb=evaluation.date_debut.strftime("%Y-%m-%dT%H:%M:%S"), + date_fin=evaluation.date_fin.strftime("%Y-%m-%dT%H:%M:%S"), + moduleimpl_id=evaluation.moduleimpl.id, + saisie_eval="true", + scodoc_dept=g.scodoc_dept, + duplication="oui", + ) + raise ScoValueError(msg, dest) db.session.add(assiduite_unique) db.session.commit()