wip/78311-parsifal-change-catalog-interval (#78311) #276

Merged
nroche merged 2 commits from wip/78311-parsifal-change-catalog-interval into main 2023-06-23 17:00:44 +02:00
3 changed files with 37 additions and 18 deletions

View File

@ -212,15 +212,6 @@ class ToulouseMaelis(BaseResource, HTTPResource):
id_key, text_key = 'schoolYear', 'schoolYear'
self.update_referential(referential_name, data, id_key, text_key)
def get_activity_catalog_raw(self, year):
return self.call(
'Activity',
'readActivityList',
schoolyear=year,
dateStartCalend='%s-09-01' % year,
dateEndCalend='%s-08-31' % (year + 1),
)
def update_activity_referentials(self):
for referential_name in ('ActivityNatureType', 'Direct', 'Service'):
id_key, text_key = 'code', 'libelle'
@ -2678,7 +2669,8 @@ class ToulouseMaelis(BaseResource, HTTPResource):
},
)
def read_activity_list(self, request, ref_date=None):
reference_year = utils.get_reference_year_from_date(ref_date or now())
if not ref_date:
ref_date = now().date()
labels = {
'service': 'Service',
'nature': "Nature de l'activité",
@ -2691,7 +2683,15 @@ 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()}
activities = self.get_activity_catalog_raw(reference_year)
activities = self.call(
'Activity',
'readActivityList',
# pass schoolyear as '1970', it's not actually used and activities will be
# returned according to dateStartCalend/dateEndCalend.
schoolyear='1970',
dateStartCalend=(ref_date - datetime.timedelta(days=365)).isoformat(),
dateEndCalend=(ref_date + datetime.timedelta(days=365)).isoformat(),
)
def add_criteria(label_key, criteria_key, criteria_value):
if not criteria_value:
@ -2774,7 +2774,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
return {
'data': data,
'meta': {
'reference_year': reference_year,
'ref_date': ref_date.isoformat(),
'all_criterias': all_criterias,
'all_criterias_order': ['service', 'nature', 'type', 'public', 'day', 'place'],
},

View File

@ -7,8 +7,8 @@ import pprint
import utils
from zeep.helpers import serialize_object
YEAR = '2022'
START_DATE = '2023-01-01'
YEAR = '1970'
START_DATE = '2022-01-01'
END_DATE = '2023-12-31'

View File

@ -6137,12 +6137,21 @@ def test_get_public_criterias(start_dob, end_dob, expected):
def test_read_activity_list(activity_service, con, app):
activity_service.add_soap_response('readActivityList', get_xml_file('R_read_activity_list.xml'))
def request_check(request):
assert request.schoolyear == 1970
assert request.dateStartCalend == datetime.datetime(2023, 3, 1, 0, 0)
assert request.dateEndCalend == datetime.datetime(2025, 2, 28, 0, 0)
activity_service.add_soap_response(
'readActivityList',
get_xml_file('R_read_activity_list.xml'),
request_check=request_check,
)
url = get_endpoint('read-activity-list')
con.loisir_nature_codes = '1,4,L,, S '
con.save()
params = {'ref_date': '2023-01-01'}
params = {'ref_date': '2024-02-29'}
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 8
@ -6208,7 +6217,7 @@ def test_read_activity_list(activity_service, con, app):
},
}
assert resp.json['meta'] == {
'reference_year': 2022,
'ref_date': '2024-02-29',
'all_criterias': {
'service': {'text': 'Service', 'data': {'sorties': 'Sorties'}, 'order': ['sorties']},
'nature': {
@ -6273,7 +6282,7 @@ def test_read_activity_list(activity_service, con, app):
assert resp.json == {
'data': [],
'meta': {
'reference_year': 2022,
'ref_date': '2024-02-29',
'all_criterias': {
'service': {'text': 'Service', 'data': {}, 'order': []},
'nature': {'text': "Nature de l'activité", 'data': {}, 'order': []},
@ -6288,6 +6297,16 @@ def test_read_activity_list(activity_service, con, app):
}
def test_read_activity_list_without_date(activity_service, con, app, freezer):
activity_service.add_soap_response('readActivityList', get_xml_file('R_read_activity_list.xml'))
url = get_endpoint('read-activity-list')
freezer.move_to('2024-02-29')
resp = app.get(url)
assert resp.json['err'] == 0
assert resp.json['meta']['ref_date'] == '2024-02-29'
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')