Skip to content

Commit b0ab413

Browse files
committed
Django - Ignore les event invalides pour la date d'approbation
La queryset `events` est utilisée par `annotate(date_approbation)` mais n'incluait pas le filtre `is_valid`. C'est maintenant le cas. Et on peut donc enlever ce filtre du `annotate(dernier_event_impactant)`.
1 parent 3a14a38 commit b0ab413

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

django/core/models.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class EventImpact(StrEnum):
125125

126126
class ProcedureQuerySet(models.QuerySet):
127127
def with_events(self, *, avant: date | None = None) -> Self:
128-
events = Event.objects.all()
128+
events = Event.objects.filter(is_valid=True)
129129
if avant:
130130
events = events.filter(date_evenement_string__lt=str(avant))
131131

@@ -142,7 +142,6 @@ def with_events(self, *, avant: date | None = None) -> Self:
142142
then=models.Subquery(
143143
events.filter(
144144
procedure=models.OuterRef("pk"),
145-
is_valid=True,
146145
type__in=event_impact_by_event_type.keys(),
147146
).values("type")[:1]
148147
),

django/core/tests/test_models.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,25 @@ def test_date_approbation_ignore_event_pas_approbation(
110110

111111
assert procedure_with_events.date_approbation == "2024-12-01"
112112

113+
@pytest.mark.django_db
114+
def test_date_approbation_ignore_event_approbation_pas_valid(
115+
self, django_assert_num_queries: DjangoAssertNumQueries
116+
) -> None:
117+
commune = create_commune()
118+
procedure = Procedure.objects.create(
119+
doc_type=TypeDocument.PLUI, collectivite_porteuse=commune
120+
)
121+
procedure.event_set.create(
122+
type="Caractère exécutoire",
123+
date_evenement_string="2024-12-01",
124+
is_valid=False,
125+
)
126+
127+
with django_assert_num_queries(1):
128+
procedure_with_events = Procedure.objects.with_events().get(id=procedure.id)
129+
130+
assert procedure_with_events.date_approbation == "0000-00-00"
131+
113132
@pytest.mark.django_db
114133
def test_date_approbation_quand_event_approbation_manquant(
115134
self, django_assert_num_queries: DjangoAssertNumQueries

0 commit comments

Comments
 (0)