toulouse-axel: add cache on get_children_activities method (#43815)

This commit is contained in:
Lauréline Guérin 2020-06-09 14:52:08 +02:00
parent dd37ef3e61
commit b37a3ddcf9
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 13 additions and 2 deletions

View File

@ -778,6 +778,11 @@ class ToulouseAxel(BaseResource):
def get_children_activities(self, dui, reference_year, activity_types=None):
activity_types = activity_types or ['MAT', 'MIDI', 'SOIR', 'GARD']
cache_key = 'toulouse-axel-%s-children-activities-%s-%s-%s' % (
self.pk, dui, reference_year, '-'.join(activity_types or []))
result = cache.get(cache_key)
if result is not None:
return result
try:
result = schemas.enfants_activites(self, {
'DUI': {
@ -796,7 +801,9 @@ class ToulouseAxel(BaseResource):
children_activities = result.json_response['DATA']['PORTAIL']['DUI'].get('ENFANT', [])
for child in children_activities:
child['REGIME_label'] = utils.get_label(utils.regime_mapping, child['REGIME'])
return {child['IDPERSONNE']: child for child in children_activities}
children_activities = {child['IDPERSONNE']: child for child in children_activities}
cache.set(cache_key, children_activities, 30) # 30 seconds
return children_activities
def get_child_activities(self, dui, reference_year, child_id, activity_types=None):
children_activities = self.get_children_activities(
@ -820,7 +827,7 @@ class ToulouseAxel(BaseResource):
def get_booking_data(self, dui, child_id, booking_date, activity_types=None):
start_date, end_date = utils.get_week_dates_from_date(booking_date)
cache_key = 'toulouse-axel-%s-possible-days-%s-%s-%s-%s' % (
cache_key = 'toulouse-axel-%s-booking-data-%s-%s-%s-%s' % (
self.pk, dui, child_id, start_date.isoformat(), '-'.join(activity_types or []))
result = cache.get(cache_key)
if result is not None:

View File

@ -2275,6 +2275,10 @@ def test_clae_children_activities_info_endpoint(app, resource, child_activities_
}
]
# again - data are in cache
resp = app.get('/toulouse-axel/test/clae_children_activities_info?NameID=yyy&booking_date=2020-01-20')
assert resp.json['err'] == 0
def test_clae_booking_activities_info_endpoint_axel_error(app, resource):
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')