From 0f1446e3a96dddc6b753feb85e30e96045a32d8f Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Mon, 27 Jun 2022 15:27:36 +0200 Subject: [PATCH] api: allow empty guardian_external_id parameter (#66332) --- chrono/api/serializers.py | 6 ++---- tests/api/datetimes/test_events_multiple_agendas.py | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/chrono/api/serializers.py b/chrono/api/serializers.py index fc52c5d2..bd58df8b 100644 --- a/chrono/api/serializers.py +++ b/chrono/api/serializers.py @@ -314,7 +314,7 @@ class AgendaOrSubscribedSlugsMixin(AgendaSlugsMixin): required=False, child=serializers.SlugField(max_length=160, allow_blank=False) ) user_external_id = serializers.CharField(required=False, max_length=250, allow_blank=False) - guardian_external_id = serializers.CharField(required=False, max_length=250, allow_blank=False) + guardian_external_id = serializers.CharField(required=False, max_length=250, allow_blank=True) def validate(self, attrs): super().validate(attrs) @@ -327,7 +327,7 @@ class AgendaOrSubscribedSlugsMixin(AgendaSlugsMixin): raise ValidationError( {'user_external_id': _('This field is required when using "subscribed" parameter.')} ) - if 'guardian_external_id' in attrs and not user_external_id: + if attrs.get('guardian_external_id') and not user_external_id: raise serializers.ValidationError( {'user_external_id': _('This field is required when using "guardian_external_id" parameter.')} ) @@ -358,9 +358,7 @@ class AgendaOrSubscribedSlugsMixin(AgendaSlugsMixin): class MultipleAgendasDatetimesSerializer(AgendaOrSubscribedSlugsMixin, DatetimesSerializer): show_past_events = serializers.BooleanField(default=False) - guardian_external_id = serializers.CharField(max_length=250, required=False) with_status = serializers.BooleanField(default=False) - guardian_external_id = serializers.CharField(max_length=250, required=False) check_overlaps = serializers.BooleanField(default=False) def validate(self, attrs): diff --git a/tests/api/datetimes/test_events_multiple_agendas.py b/tests/api/datetimes/test_events_multiple_agendas.py index 6c12e50f..8cffabd1 100644 --- a/tests/api/datetimes/test_events_multiple_agendas.py +++ b/tests/api/datetimes/test_events_multiple_agendas.py @@ -712,6 +712,13 @@ def test_datetimes_multiple_agendas_shared_custody(app): resp = app.get('/api/agendas/datetimes/', params={'subscribed': 'all', 'user_external_id': 'child_id'}) assert len(resp.json['data']) == 2 + # empty guardian_external_id parameter is ignored + resp = app.get( + '/api/agendas/datetimes/?guardian_external_id=', + 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