toulouse-maelis: return recurrent week pattern from subscription data (#74438)

This commit is contained in:
Nicolas Roche 2023-02-09 00:00:24 +01:00 committed by Gitea
parent de5ebe8316
commit cb46e3049e
2 changed files with 84 additions and 1 deletions

View File

@ -2666,7 +2666,34 @@ class ToulouseMaelis(BaseResource, HTTPResource):
},
'dateRef': ref_date,
}
return {'data': self.call('Activity', 'getPersonUnitInfo', getPersonUnitInfoRequestBean=params)}
response = self.call('Activity', 'getPersonUnitInfo', getPersonUnitInfoRequestBean=params)
day_names = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
recurrent_week = []
weekly_calendar = response['weeklyCalendarActivity']
if response['calendarGeneration'].get('value') in ('O', 'F') and weekly_calendar:
units = []
for item in response.get('unitScheduleList') or []:
key = item['unit']['calendarLetter']
value = item['unit']['libelle']
units.append((key, value))
for item in weekly_calendar.get('dayWeekInfoList') or []:
if item['isOpen']:
day_num = item['dayNum']
day = day_names[day_num - 1]
for key, value in units:
recurrent_week.append(
{
'id': '%s-%s' % (day_num, key),
'day': day,
'label': value,
'overlaps': ['%s-%s' % (day_num, k) for k, v in units if k != key],
'text': '%s %s' % (day, value),
}
)
response['recurrent_week'] = recurrent_week
return {'data': response}
@endpoint(
display_category='Inscriptions',
@ -2699,6 +2726,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
'idPlace': post_data['place_id'],
'dateStartSubscribe': post_data['start_date'],
'dateEndSubscribe': post_data['end_date'],
'dayWeekInfoList': recurrent_week,
}
}
response = self.call('Activity', 'addPersonUnitBasket', **payload)

View File

@ -5694,6 +5694,7 @@ def test_get_person_subscription_info(activity_service, con, app):
'billingInformation': None,
'action': 'ADD_SUBSCRIBE',
'indicatorList': [],
'recurrent_week': [],
}
# no date provided
@ -5814,6 +5815,60 @@ def test_get_person_subscription_info_with_recurrent_week(activity_service, con,
'billingInformation': None,
'action': 'ADD_SUBSCRIBE',
'indicatorList': [],
'recurrent_week': [
{'id': '1-C', 'day': 'Lundi', 'label': 'Journée', 'overlaps': ['1-B'], 'text': 'Lundi Journée'},
{
'id': '1-B',
'day': 'Lundi',
'label': 'Demi-journée',
'overlaps': ['1-C'],
'text': 'Lundi Demi-journée',
},
{'id': '2-C', 'day': 'Mardi', 'label': 'Journée', 'overlaps': ['2-B'], 'text': 'Mardi Journée'},
{
'id': '2-B',
'day': 'Mardi',
'label': 'Demi-journée',
'overlaps': ['2-C'],
'text': 'Mardi Demi-journée',
},
{
'id': '3-C',
'day': 'Mercredi',
'label': 'Journée',
'overlaps': ['3-B'],
'text': 'Mercredi Journée',
},
{
'id': '3-B',
'day': 'Mercredi',
'label': 'Demi-journée',
'overlaps': ['3-C'],
'text': 'Mercredi Demi-journée',
},
{'id': '4-C', 'day': 'Jeudi', 'label': 'Journée', 'overlaps': ['4-B'], 'text': 'Jeudi Journée'},
{
'id': '4-B',
'day': 'Jeudi',
'label': 'Demi-journée',
'overlaps': ['4-C'],
'text': 'Jeudi Demi-journée',
},
{
'id': '5-C',
'day': 'Vendredi',
'label': 'Journée',
'overlaps': ['5-B'],
'text': 'Vendredi Journée',
},
{
'id': '5-B',
'day': 'Vendredi',
'label': 'Demi-journée',
'overlaps': ['5-C'],
'text': 'Vendredi Demi-journée',
},
],
}
# no date provided