Projet

Général

Profil

0001-api-allow-empty-guardian_external_id-parameter-66332.patch

Valentin Deniaud, 27 juin 2022 15:28

Télécharger (3,13 ko)

Voir les différences:

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(-)
chrono/api/serializers.py
314 314
        required=False, child=serializers.SlugField(max_length=160, allow_blank=False)
315 315
    )
316 316
    user_external_id = serializers.CharField(required=False, max_length=250, allow_blank=False)
317
    guardian_external_id = serializers.CharField(required=False, max_length=250, allow_blank=False)
317
    guardian_external_id = serializers.CharField(required=False, max_length=250, allow_blank=True)
318 318

  
319 319
    def validate(self, attrs):
320 320
        super().validate(attrs)
......
327 327
            raise ValidationError(
328 328
                {'user_external_id': _('This field is required when using "subscribed" parameter.')}
329 329
            )
330
        if 'guardian_external_id' in attrs and not user_external_id:
330
        if attrs.get('guardian_external_id') and not user_external_id:
331 331
            raise serializers.ValidationError(
332 332
                {'user_external_id': _('This field is required when using "guardian_external_id" parameter.')}
333 333
            )
......
358 358

  
359 359
class MultipleAgendasDatetimesSerializer(AgendaOrSubscribedSlugsMixin, DatetimesSerializer):
360 360
    show_past_events = serializers.BooleanField(default=False)
361
    guardian_external_id = serializers.CharField(max_length=250, required=False)
362 361
    with_status = serializers.BooleanField(default=False)
363
    guardian_external_id = serializers.CharField(max_length=250, required=False)
364 362
    check_overlaps = serializers.BooleanField(default=False)
365 363

  
366 364
    def validate(self, attrs):
tests/api/datetimes/test_events_multiple_agendas.py
712 712
    resp = app.get('/api/agendas/datetimes/', params={'subscribed': 'all', 'user_external_id': 'child_id'})
713 713
    assert len(resp.json['data']) == 2
714 714

  
715
    # empty guardian_external_id parameter is ignored
716
    resp = app.get(
717
        '/api/agendas/datetimes/?guardian_external_id=',
718
        params={'subscribed': 'all', 'user_external_id': 'child_id'},
719
    )
720
    assert len(resp.json['data']) == 2
721

  
715 722
    # add shared custody agenda
716 723
    father = Person.objects.create(user_external_id='father_id', first_name='John', last_name='Doe')
717 724
    mother = Person.objects.create(user_external_id='mother_id', first_name='Jane', last_name='Doe')
718
-