toulouse-maelis: remove cache on activity catalog (#78141)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Nicolas Roche 2023-06-02 17:52:06 +02:00 committed by Nicolas Roche
parent ad752230d6
commit 5e94eb86a3
3 changed files with 9 additions and 84 deletions

View File

@ -229,19 +229,6 @@ class ToulouseMaelis(BaseResource, HTTPResource):
id_key, text_key = 'id', 'lib1'
self.update_referential(referential_name, data, id_key, text_key)
# put activity catalog per year as referential
data = []
reference_year = utils.get_reference_year_from_date(datetime.date.today())
for year in range(reference_year, reference_year + 2):
data.append(
{
'id': str(year),
'text': '%s-%s' % (year, year + 1),
'data': self.get_activity_catalog_raw(year),
}
)
self.update_referential('ActivityCatalog', data, 'id', 'text')
def update_ape_referentials(self):
indicators = self.call('Ape', 'readApeIndicatorList')
self.update_referential('ApeIndicator', indicators, 'level', 'level')
@ -2704,23 +2691,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
all_criterias = {key: {'text': value, 'data': {}} for key, value in labels.items()}
criterias = {key: {'text': value, 'data': {}} for key, value in labels.items()}
# do not use cache, except on timeout
try:
response = self.get_activity_catalog_raw(reference_year)
except SOAPServiceUnreachable:
pass
else:
data = [
{
'id': str(reference_year),
'text': '%s-%s' % (reference_year, reference_year + 1),
'data': response,
}
]
self.update_referential('ActivityCatalog', data, 'id', 'text', delete=False)
catalogs = self.get_referential('ActivityCatalog', id=reference_year)
activities = catalogs[0]['data'] if catalogs else []
activities = self.get_activity_catalog_raw(reference_year)
def add_criteria(label_key, criteria_key, criteria_value):
if not criteria_value:

View File

@ -16,7 +16,6 @@
from math import inf
from dateutil.relativedelta import relativedelta
from django.utils.dateparse import parse_date
json_date_format = '%Y-%m-%d'
@ -40,8 +39,8 @@ def get_public_criterias(today, start_dob, end_dob):
ages = [0, 3, 12, 18, 26, 60, 62]
data = []
max_age = relativedelta(today, parse_date(start_dob[:10])).years if start_dob else inf
min_age = relativedelta(today, parse_date(end_dob[:10])).years if end_dob else 0
max_age = relativedelta(today, start_dob.date()).years if start_dob else inf
min_age = relativedelta(today, end_dob.date()).years if end_dob else 0
for i in range(0, len(ages) - 1):
for age in range(ages[i], ages[i + 1] - 1):
if min_age <= age <= max_age:

View File

@ -240,9 +240,6 @@ def django_db_setup(django_db_setup, django_db_blocker):
activity_mock.add_soap_response(
'readActivityNatureTypeList', get_xml_file('R_read_activity_nature_type_list.xml')
)
activity_mock.add_soap_response(
'readActivityList', get_xml_file('R_read_activity_list.xml')
)
activity_mock.add_soap_response('readDirectList', get_xml_file('R_read_direct_list.xml'))
activity_mock.add_soap_response(
'readServiceList', get_xml_file('R_read_service_list.xml')
@ -514,7 +511,6 @@ def test_update_referential_empty(mocked_get, con):
def test_cron(db):
assert Referential.objects.filter(referential_name='Category').count() == 3
assert sorted(list({x.referential_name for x in Referential.objects.all()})) == [
'ActivityCatalog',
'ActivityNatureType',
'ApeIndicator',
'CSP',
@ -546,10 +542,6 @@ def test_cron(db):
'YearSchool',
]
assert [
(x.item_id, x.item_text) for x in Referential.objects.filter(referential_name='ActivityCatalog').all()
] == [('2022', '2022-2023'), ('2023', '2023-2024')]
def test_link(family_service, con, app):
def request_check(request):
@ -6134,6 +6126,12 @@ def test_create_child_school_pre_registration_with_sibling(family_service, con,
)
def test_get_public_criterias(start_dob, end_dob, expected):
today = parse_date('2023-01-01')
if start_dob:
start_dob = parse_date(start_dob)
start_dob = datetime.datetime.combine(start_dob, datetime.datetime.min.time())
if end_dob:
end_dob = parse_date(end_dob)
end_dob = datetime.datetime.combine(end_dob, datetime.datetime.min.time())
result = get_public_criterias(today, start_dob, end_dob)
assert expected == [x[1] for x in result]
@ -6290,49 +6288,6 @@ def test_read_activity_list(activity_service, con, app):
}
@mock.patch('passerelle.utils.Request.get')
def test_read_activity_list_cache(mocked_get, con, app):
mocked_get.return_value = ACTIVITY_SERVICE_WSDL
url = get_endpoint('read-activity-list')
params = {'ref_date': '1970-01-01'}
assert [x.item_id for x in Referential.objects.filter(referential_name='ActivityCatalog')] == [
'2022',
'2023',
]
with mock.patch('passerelle.utils.Request.post') as mocked_post:
mocked_post.side_effect = ReadTimeout('timeout')
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 0
assert [x.item_id for x in Referential.objects.filter(referential_name='ActivityCatalog')] == [
'2022',
'2023',
]
with mock.patch('passerelle.utils.Request.post') as mocked_post:
mocked_post.return_value = FakedResponse(
content=get_xml_file('R_read_activity_list.xml'), status_code=200
)
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 8
assert [x.item_id for x in Referential.objects.filter(referential_name='ActivityCatalog')] == [
'1969',
'2022',
'2023',
]
with mock.patch('passerelle.utils.Request.post') as mocked_post:
mocked_post.side_effect = ReadTimeout('timeout')
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 8
def test_read_activity_list_no_nature(activity_service, con, app):
activity_service.add_soap_response('readActivityList', get_xml_file('R_read_activity_list_no_nature.xml'))
url = get_endpoint('read-activity-list')