Assiduite: filtrage par formsemestre: intersection dates

This commit is contained in:
Emmanuel Viennet 2024-02-08 16:23:14 +01:00
parent 9ec0ef27ba
commit 8cf85f78a8
2 changed files with 7 additions and 7 deletions

View File

@ -68,7 +68,7 @@ class FormSemestre(db.Model):
semestre_id = db.Column(db.Integer, nullable=False, default=1, server_default="1")
titre = db.Column(db.Text(), nullable=False)
date_debut = db.Column(db.Date(), nullable=False)
date_fin = db.Column(db.Date(), nullable=False)
date_fin = db.Column(db.Date(), nullable=False) # jour inclus
edt_id: str | None = db.Column(db.Text(), index=True, nullable=True)
"identifiant emplois du temps (unicité non imposée)"
etat = db.Column(db.Boolean(), nullable=False, default=True, server_default="true")

View File

@ -499,9 +499,9 @@ def filter_by_formsemestre(
formsemestre: FormSemestre,
) -> Query:
"""
Filtrage d'une collection : conserve les élements
- si l'étudiant est inscrit au formsemestre
- Et que la plage de dates est complètement incluse dans le semestre (bizarre!)
Filtrage d'une collection : conserve les élements tels que
- l'étudiant est inscrit au formsemestre
- et la plage de dates intersecte celle du formsemestre
"""
if formsemestre is None:
@ -520,10 +520,10 @@ def filter_by_formsemestre(
form_date_fin = formsemestre.date_fin + timedelta(days=1)
collection_result = collection_result.filter(
collection_class.date_debut >= form_date_debut
)
collection_class.date_debut <= form_date_fin
).filter(collection_class.date_fin >= form_date_debut)
return collection_result.filter(collection_class.date_fin <= form_date_fin)
return collection_result
def filter_by_modimpls(