api: ignore guardian_external_id when child has no custody agenda (#66828)
This commit is contained in:
parent
f45fd14676
commit
7ba7ace9de
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -641,15 +641,13 @@ def test_api_events_fillslots_multiple_agendas_shared_custody(app, user):
|
|||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'Some events are outside guardian custody: first-agenda@event-thursday'
|
||||
|
||||
# unknown child
|
||||
child.delete()
|
||||
# guardian_external_id parameter is ignored if there is no custody agenda for child
|
||||
agenda.delete()
|
||||
resp = app.post_json(
|
||||
'/api/agendas/events/fillslots/?subscribed=all&guardian_external_id=mother_id',
|
||||
params=params,
|
||||
status=400,
|
||||
)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'Some events are outside guardian custody: first-agenda@event-thursday'
|
||||
assert resp.json['booking_count'] == 1
|
||||
|
||||
|
||||
@pytest.mark.freeze_time('2022-03-07 14:00') # Monday of 10th week
|
||||
|
|
Loading…
Reference in New Issue