From d536d5ae79fff8f171f4cd41fdeee0cb9838b1ca Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 30 Jun 2022 11:24:25 +0200 Subject: [PATCH] api: ignore guardian_external_id when child has no custody agenda (#66828) --- chrono/agendas/models.py | 9 +++++++-- tests/api/datetimes/test_events_multiple_agendas.py | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index 04a86955..c2f45b60 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -824,7 +824,12 @@ class Agenda(models.Model): @staticmethod def filter_for_guardian(qs, guardian_external_id, child_external_id): - agendas = SharedCustodyAgenda.objects.filter(children__user_external_id=child_external_id) + agendas = SharedCustodyAgenda.objects.filter(children__user_external_id=child_external_id).order_by( + '-date_start' + ) + if not agendas: + return qs + qs = ( qs.annotate(week=ExtractWeek('start_datetime')) .annotate(week_number=Cast('week', models.IntegerField())) @@ -833,7 +838,7 @@ class Agenda(models.Model): previous_date_start = None filtered_qs = Event.objects.none() - for agenda in agendas.order_by('-date_start'): + for agenda in agendas: filtered_qs |= Agenda.filter_for_custody_agenda( qs, agenda, guardian_external_id, date_end=previous_date_start ) diff --git a/tests/api/datetimes/test_events_multiple_agendas.py b/tests/api/datetimes/test_events_multiple_agendas.py index fed20740..c66f5dc8 100644 --- a/tests/api/datetimes/test_events_multiple_agendas.py +++ b/tests/api/datetimes/test_events_multiple_agendas.py @@ -720,6 +720,13 @@ def test_datetimes_multiple_agendas_shared_custody(app): ) assert len(resp.json['data']) == 2 + # guardian_external_id parameter is ignored if there is no custody agenda for child + resp = app.get( + '/api/agendas/datetimes/?guardian_external_id=xxx', + params={'subscribed': 'all', 'user_external_id': 'child_id'}, + ) + assert len(resp.json['data']) == 2 + # add shared custody agenda father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe') mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe') -- 2.30.2