api: allow empty guardian_external_id parameter (#66332)

This commit is contained in:
Valentin Deniaud 2022-06-27 15:27:36 +02:00
parent 9842b071c8
commit 2e9fe5b794
2 changed files with 9 additions and 4 deletions

View File

@ -321,7 +321,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)
@ -334,7 +334,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.')}
)
@ -365,9 +365,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):

View File

@ -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')