toulouse-axel: add cache on get_children_activities method (#43815)
This commit is contained in:
parent
dd37ef3e61
commit
b37a3ddcf9
|
@ -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:
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue