Assiduites : fix #686

This commit is contained in:
iziram 2023-09-13 08:24:08 +02:00
parent 3eb8869349
commit 6cbfd97031

View File

@ -46,6 +46,7 @@ from app.models import (
Module, Module,
ModuleImpl, ModuleImpl,
ScolarNews, ScolarNews,
Assiduite,
) )
from app.models.etudiants import Identite from app.models.etudiants import Identite
@ -75,6 +76,8 @@ import app.scodoc.sco_utils as scu
from app.scodoc.sco_utils import json_error from app.scodoc.sco_utils import json_error
from app.scodoc.sco_utils import ModuleType from app.scodoc.sco_utils import ModuleType
from flask_sqlalchemy.query import Query
def convert_note_from_string( def convert_note_from_string(
note: str, note: str,
@ -1102,30 +1105,21 @@ def _get_sorted_etuds(evaluation: Evaluation, etudids: list, formsemestre_id: in
# Groupes auxquels appartient cet étudiant: # Groupes auxquels appartient cet étudiant:
e["groups"] = sco_groups.get_etud_groups(etudid, formsemestre_id) e["groups"] = sco_groups.get_etud_groups(etudid, formsemestre_id)
# Information sur absence (tenant compte de la demi-journée) # Information sur absence
jour_iso = ( warn_abs_lst: str = ""
evaluation.date_debut.date().isoformat() if evaluation.date_debut else "" if evaluation.date_debut is not None and evaluation.date_fin is not None:
) assiduites_etud: Query = etud.assiduites.filter(
warn_abs_lst = [] Assiduite.etat == scu.EtatAssiduite.ABSENT,
# XXX TODO-ASSIDUITE (issue #686) Assiduite.date_debut <= evaluation.date_fin,
if evaluation.is_matin(): Assiduite.date_fin >= evaluation.date_debut,
nbabs = 0 # TODO-ASSIDUITE sco_abs.count_abs(etudid, jour_iso, jour_iso, matin=True) )
nbabsjust = 0 # TODO-ASSIDUITE sco_abs.count_abs_just(etudid, jour_iso, jour_iso, matin=True) premiere_assi: Assiduite = assiduites_etud.first()
if nbabs: if premiere_assi is not None:
if nbabsjust: warn_abs_lst: str = (
warn_abs_lst.append("absent justifié le matin !") f"absent {'justifié' if premiere_assi.est_just else ''}"
else: )
warn_abs_lst.append("absent le matin !")
if evaluation.is_apresmidi():
nbabs = 0 # TODO-ASSIDUITE sco_abs.count_abs(etudid, jour_iso, jour_iso, matin=0)
nbabsjust = 0 # TODO-ASSIDUITE sco_abs.count_abs_just(etudid, jour_iso, jour_iso, matin=0)
if nbabs:
if nbabsjust:
warn_abs_lst.append("absent justifié l'après-midi !")
else:
warn_abs_lst.append("absent l'après-midi !")
e["absinfo"] = '<span class="sn_abs">' + " ".join(warn_abs_lst) + "</span> " e["absinfo"] = '<span class="sn_abs">' + warn_abs_lst + "</span> "
# Note actuelle de l'étudiant: # Note actuelle de l'étudiant:
if etudid in notes_db: if etudid in notes_db: