Projet

Général

Profil

0001-maelis-factorise-child_activity-endpoint-50081.patch

Nicolas Roche, 14 janvier 2021 18:31

Télécharger (4,78 ko)

Voir les différences:

Subject: [PATCH 1/4] maelis: factorise child_activity endpoint (#50081)

 passerelle/apps/maelis/models.py | 51 +++++++++++++++++---------------
 1 file changed, 27 insertions(+), 24 deletions(-)
passerelle/apps/maelis/models.py
395 395
            end_datetime = start_datetime + timezone.timedelta(days=62)
396 396
        r = self.call('ActivityService?wsdl', 'readActivityList',
397 397
                      schoolyear=school_year, numPerson=personID,
398 398
                      dateStartCalend=start_datetime,
399 399
                      dateEndCalend=end_datetime)
400 400
        activities = serialize_object(r)
401 401
        return {'data': [utils.normalize_activity(a) for a in activities]}
402 402

  
403
    @endpoint(
404
        display_category=_('Activities'),
405
        perm='can_access',
406
        display_order=2,
407
        description=_('Get child activities'),
408
        name='child-activities',
409
        parameters={
410
            'NameID': {'description': _('Publik ID')},
411
            'childID': {'description': _('Child ID')},
412
            'subscribingStatus': {
413
                'description': _('subscribed, not-subscribed or None')},
414
            'queryDate': {'description': _('Optional querying date (YYYY-MM-DD)')}
415
    })
416
    def child_activities(self, request, NameID, childID,
417
                         subscribingStatus=None, queryDate=None):
418
        if subscribingStatus:
419
            if subscribingStatus != 'subscribed' and subscribingStatus != 'not-subscribed':
420
                raise APIError('wrong value for subscribingStatus: %s' % subscribingStatus)
421
        if queryDate:
403
    def get_activities_dates(self, query_date):
404
        if query_date:
422 405
            try:
423
                start_date = parse_date(queryDate)
406
                start_date = parse_date(query_date)
424 407
            except ValueError as exc:
425 408
                raise APIError('input is well formatted but not a valid date: %s' % exc)
426 409
            if not start_date:
427
                raise APIError("input isn't well formatted, YYYY-MM-DD expected: %s" % queryDate)
410
                raise APIError("input isn't well formatted, YYYY-MM-DD expected: %s" % query_date)
428 411
        else:
429 412
            start_date = timezone.now().date()
430 413
        if start_date.strftime('%m-%d') >= '05-01':
431 414
            # start displaying next year activities on may
432 415
            school_year = start_date.year
433 416
        else:
434 417
            school_year = start_date.year - 1
435 418
        end_date = utils.get_datetime('%s-07-31' % (school_year + 1)).date()
419
        return school_year, start_date, end_date
436 420

  
437
        child_info = self.get_child_info(NameID, childID)
421
    def get_child_activities(self, childID, school_year, start_date, end_date):
438 422
        r = self.call('ActivityService?wsdl', 'readActivityList',
439 423
                      schoolyear=school_year,
440 424
                      numPerson=childID,
441 425
                      dateStartCalend=start_date,
442 426
                      dateEndCalend=end_date)
427
        return serialize_object(r)
443 428

  
444
        flatted_activities = utils.flatten_activities(
445
            serialize_object(r), start_date, end_date)
429
    @endpoint(
430
        display_category=_('Activities'),
431
        perm='can_access',
432
        display_order=2,
433
        description=_('Get child activities'),
434
        name='child-activities',
435
        parameters={
436
            'NameID': {'description': _('Publik ID')},
437
            'childID': {'description': _('Child ID')},
438
            'subscribingStatus': {
439
                'description': _('subscribed, not-subscribed or None')},
440
            'queryDate': {'description': _('Optional querying date (YYYY-MM-DD)')}
441
    })
442
    def child_activities(self, request, NameID, childID, subscribingStatus=None, queryDate=None):
443
        if subscribingStatus and subscribingStatus not in ('subscribed', 'not-subscribed'):
444
            raise APIError('wrong value for subscribingStatus: %s' % subscribingStatus)
445
        school_year, start_date, end_date = self.get_activities_dates(queryDate)
446
        child_info = self.get_child_info(NameID, childID)
447
        activities = self.get_child_activities(childID, school_year, start_date, end_date)
448
        flatted_activities = utils.flatten_activities(activities, start_date, end_date)
446 449
        utils.mark_subscribed_flatted_activities(flatted_activities, child_info)
447 450
        data = utils.flatted_activities_as_list(flatted_activities, subscribingStatus)
448 451
        return {'data': data}
449 452

  
450 453
    @endpoint(
451 454
        display_category=_('Activities'),
452 455
        perm='can_access',
453 456
        display_order=3,
454
-