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") semestre_id = db.Column(db.Integer, nullable=False, default=1, server_default="1")
titre = db.Column(db.Text(), nullable=False) titre = db.Column(db.Text(), nullable=False)
date_debut = db.Column(db.Date(), 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) edt_id: str | None = db.Column(db.Text(), index=True, nullable=True)
"identifiant emplois du temps (unicité non imposée)" "identifiant emplois du temps (unicité non imposée)"
etat = db.Column(db.Boolean(), nullable=False, default=True, server_default="true") etat = db.Column(db.Boolean(), nullable=False, default=True, server_default="true")

View File

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