From 8cf85f78a8015b07349842f414bf04e4d3ff8122 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 8 Feb 2024 16:23:14 +0100 Subject: [PATCH] Assiduite: filtrage par formsemestre: intersection dates --- app/models/formsemestre.py | 2 +- app/scodoc/sco_assiduites.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 6cdaef8af..9d2f5b134 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -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") diff --git a/app/scodoc/sco_assiduites.py b/app/scodoc/sco_assiduites.py index b429187e9..40da4a9ff 100644 --- a/app/scodoc/sco_assiduites.py +++ b/app/scodoc/sco_assiduites.py @@ -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(