toulouse-maelis: remove cache on activity catalog (#78141)
gitea/passerelle/pipeline/head This commit looks good
Details
gitea/passerelle/pipeline/head This commit looks good
Details
This commit is contained in:
parent
ad752230d6
commit
5e94eb86a3
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue