0001-api-ignore-guardian_external_id-when-child-has-no-cu.patch
chrono/agendas/models.py | ||
---|---|---|
824 | 824 | |
825 | 825 |
@staticmethod |
826 | 826 |
def filter_for_guardian(qs, guardian_external_id, child_external_id): |
827 |
agendas = SharedCustodyAgenda.objects.filter(children__user_external_id=child_external_id) |
|
827 |
agendas = SharedCustodyAgenda.objects.filter(children__user_external_id=child_external_id).order_by( |
|
828 |
'-date_start' |
|
829 |
) |
|
830 |
if not agendas: |
|
831 |
return qs |
|
832 | ||
828 | 833 |
qs = ( |
829 | 834 |
qs.annotate(week=ExtractWeek('start_datetime')) |
830 | 835 |
.annotate(week_number=Cast('week', models.IntegerField())) |
... | ... | |
833 | 838 | |
834 | 839 |
previous_date_start = None |
835 | 840 |
filtered_qs = Event.objects.none() |
836 |
for agenda in agendas.order_by('-date_start'):
|
|
841 |
for agenda in agendas: |
|
837 | 842 |
filtered_qs |= Agenda.filter_for_custody_agenda( |
838 | 843 |
qs, agenda, guardian_external_id, date_end=previous_date_start |
839 | 844 |
) |
tests/api/datetimes/test_events_multiple_agendas.py | ||
---|---|---|
720 | 720 |
) |
721 | 721 |
assert len(resp.json['data']) == 2 |
722 | 722 | |
723 |
# guardian_external_id parameter is ignored if there is no custody agenda for child |
|
724 |
resp = app.get( |
|
725 |
'/api/agendas/datetimes/?guardian_external_id=xxx', |
|
726 |
params={'subscribed': 'all', 'user_external_id': 'child_id'}, |
|
727 |
) |
|
728 |
assert len(resp.json['data']) == 2 |
|
729 | ||
723 | 730 |
# add shared custody agenda |
724 | 731 |
father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe') |
725 | 732 |
mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe') |
tests/api/fillslot/test_events_multiple_agendas.py | ||
---|---|---|
641 | 641 |
assert resp.json['err'] == 1 |
642 | 642 |
assert resp.json['err_desc'] == 'Some events are outside guardian custody: first-agenda@event-thursday' |
643 | 643 | |
644 |
# unknown child
|
|
645 |
child.delete()
|
|
644 |
# guardian_external_id parameter is ignored if there is no custody agenda for child
|
|
645 |
agenda.delete()
|
|
646 | 646 |
resp = app.post_json( |
647 | 647 |
'/api/agendas/events/fillslots/?subscribed=all&guardian_external_id=mother_id', |
648 | 648 |
params=params, |
649 |
status=400, |
|
650 | 649 |
) |
651 |
assert resp.json['err'] == 1 |
|
652 |
assert resp.json['err_desc'] == 'Some events are outside guardian custody: first-agenda@event-thursday' |
|
650 |
assert resp.json['booking_count'] == 1 |
|
653 | 651 | |
654 | 652 | |
655 | 653 |
@pytest.mark.freeze_time('2022-03-07 14:00') # Monday of 10th week |
656 |
- |