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 |
|
-
|