toulouse-maelis: add endpoints to update week-calendar (#75425)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Nicolas Roche 2023-02-19 16:02:15 +01:00
parent 912b6090e0
commit 7110876f33
4 changed files with 783 additions and 0 deletions

View File

@ -83,6 +83,38 @@ BOOKING_ACTIVITY_SCHEMA = {
],
}
UPDATE_RECURRENT_WEEK_SCHEMA = {
'type': 'object',
'properties': {
'person_id': {
'type': 'string',
'pattern': '^[0-9]+$',
},
'activity_id': {
'type': 'string',
'pattern': '^[A-Za-z0-9]+$',
},
'start_date': {
'type': 'string',
'pattern': '^[0-9]{4}-[0-9]{2}-[0-9]{2}$',
},
'end_date': {
'type': 'string',
'pattern': '^([0-9]{4}-[0-9]{2}-[0-9]{2}){0,1}$',
},
'recurrent_week': {
'type': 'array',
'items': {'type': 'string'},
},
},
'required': [
'person_id',
'activity_id',
'start_date',
'recurrent_week',
],
}
SUBSCRIPTION_SCHEMA = {
'type': 'object',
'properties': {

View File

@ -2156,6 +2156,117 @@ class ToulouseMaelis(BaseResource, HTTPResource):
'changes': updated,
}
@endpoint(
display_category='Réservation',
description="Obtenir la semaine type d'une activité",
name='get-recurrent-week',
perm='can_access',
parameters={
'NameID': {'description': 'Publik NameID'},
'family_id': {'description': 'Numéro de DUI'},
'person_id': {'description': "Numéro du responsale légal ou de l'enfant"},
'activity_id': {'description': "Numéro de l'activité"},
'ref_date': {
'description': "Date de référence, utilisée pour interroger l'agenda sur l'année et le mois",
'type': 'date',
},
},
)
def get_recurrent_week(self, request, person_id, activity_id, ref_date, NameID=None, family_id=None):
family_id = family_id or self.get_link(NameID).family_id
self.get_rl_or_child_raw(family_id, person_id)
payload = {
'requestBean': {
'numDossier': family_id,
'numPerson': person_id,
'idAct': activity_id,
'year': ref_date.year,
'month': ref_date.month,
}
}
response = self.call('Activity', 'getPersonScheduleList', **payload)
date_min_prev = None
recurrent_week = []
day_names = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
for result_data in response or []:
for schedule in result_data['activityScheduleList']:
if schedule['activity']['idAct'] != activity_id or not schedule.get('weeklyCalendar'):
continue
units = []
for item in schedule['unitScheduleList']:
key = item['unit']['calendarLetter']
value = item['unit']['libelle']
units.append((key, value))
if item.get('datePrevMin'):
if not date_min_prev or item['datePrevMin'] > date_min_prev:
date_min_prev = item['datePrevMin']
for item in schedule['weeklyCalendar'].get('dayWeekInfoList') or []:
if item['isOpen']:
day_num = item['dayNum']
day_str = day_names[day_num - 1]
for key, value in units:
recurrent_week.append(
{
'id': '%s-%s' % (day_num, key),
'day': day_str,
'label': value,
'overlaps': ['%s-%s' % (day_num, k) for k, v in units if k != key],
'text': '%s %s' % (day_str, value),
}
)
if not recurrent_week:
raise APIError(
'No week calendar for activity %s on %s'
% (activity_id, ref_date.strftime(utils.json_date_format))
)
return {
'data': recurrent_week,
'meta': {'date_min_prev': date_min_prev.strftime(utils.json_date_format)},
}
@endpoint(
display_category='Réservation',
description="Modifier la semaine type d'une inscription",
name='update-recurrent-week',
perm='can_access',
parameters={
'NameID': {'description': 'Publik NameID'},
'family_id': {'description': 'Numéro de DUI'},
},
post={
'request_body': {
'schema': {
'application/json': activity_schemas.UPDATE_RECURRENT_WEEK_SCHEMA,
}
}
},
)
def update_recurrent_week(self, request, post_data, NameID=None, family_id=None):
family_id = family_id or self.get_link(NameID).family_id
self.get_rl_or_child_raw(family_id, post_data['person_id'])
recurrent_week = []
for item in post_data.get('recurrent_week') or []:
day_num, key = item.split('-')
recurrent_week.append(
{
'dayNum': day_num,
'calendarLetter': key,
'isPresent': True,
}
)
payload = {
'numPerson': post_data['person_id'],
'idActivity': post_data['activity_id'],
'dateStart': post_data['start_date'],
'dateEnd': post_data.get('end_date'),
'dayWeekInfoList': recurrent_week,
}
response = self.call('Activity', 'updateWeekCalendar', **payload)
return {'data': response}
@endpoint(
display_category='Facture',
description="Ajouter une autorisation de prélèvement",

View File

@ -0,0 +1,466 @@
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getPersonScheduleListResponse xmlns:ns2="activity.ws.maelis.sigec.com" xmlns:ns3="bean.persistence.activity.ws.maelis.sigec.com" xmlns:ns4="bean.persistence.school.ws.maelis.sigec.com">
<resultBean>
<personScheduleList>
<person>
<numPerson>261768</numPerson>
<lastname>NICO</lastname>
<firstname>BART</firstname>
</person>
<activityScheduleList>
<activity>
<idAct>A10049327682</idAct>
<libelle>RESTAURATION SCOLAIRE 22/23</libelle>
<activityType>
<code>RESTSCOL</code>
<libelle>Restauration scolaire</libelle>
<natureSpec>
<code>R</code>
<libelle>Restauration Scolaire</libelle>
</natureSpec>
</activityType>
</activity>
<weeklyCalendar>
<yearCalendar>2023</yearCalendar>
<dayWeekInfoList>
<dayNum>1</dayNum>
<isOpen>true</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>2</dayNum>
<isOpen>true</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>3</dayNum>
<isOpen>false</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>4</dayNum>
<isOpen>true</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>5</dayNum>
<isOpen>true</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>6</dayNum>
<isOpen>false</isOpen>
</dayWeekInfoList>
<dayWeekInfoList>
<dayNum>7</dayNum>
<isOpen>false</isOpen>
</dayWeekInfoList>
</weeklyCalendar>
<unitScheduleList>
<unit>
<idUnit>A10049355140</idUnit>
<libelle>PAI PANIER 22/23</libelle>
<calendarLetter>B</calendarLetter>
</unit>
<datePrevMin>2023-03-27T00:00:00+02:00</datePrevMin>
<dayInfoList>
<day>2023-04-01T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-02T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-03T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-04T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-05T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-06T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-07T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-08T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-09T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-10T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-11T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-12T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-13T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-14T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-15T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-16T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-17T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-18T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-19T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-20T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-21T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-22T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-23T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-24T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-25T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-26T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-27T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-28T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>ADD_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-29T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-30T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
</unitScheduleList>
<unitScheduleList>
<unit>
<idUnit>A10049327683</idUnit>
<libelle>RESTAURATION SCOLAIRE 22/23</libelle>
<calendarLetter>X</calendarLetter>
</unit>
<datePrevMin>2023-03-27T00:00:00+02:00</datePrevMin>
<dayInfoList>
<day>2023-04-01T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-02T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-03T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-04T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-05T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-06T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-07T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-08T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-09T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-10T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-11T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-12T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-13T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-14T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-15T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-16T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-17T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-18T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-19T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-20T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-21T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-22T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-23T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-24T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-25T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-26T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-27T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-28T00:00:00+02:00</day>
<scheduledPresence>1</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>WRITABLE</ns3:status>
<ns3:action>DEL_PRES_PREVI</ns3:action>
</dayInfoList>
<dayInfoList>
<day>2023-04-29T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
<dayInfoList>
<day>2023-04-30T00:00:00+02:00</day>
<scheduledPresence>0</scheduledPresence>
<realPresence>0</realPresence>
<ns3:status>NO_READ</ns3:status>
</dayInfoList>
</unitScheduleList>
</activityScheduleList>
</personScheduleList>
</resultBean>
</ns2:getPersonScheduleListResponse>
</soap:Body>
</soap:Envelope>

View File

@ -5036,6 +5036,180 @@ def test_update_child_agenda_date_error(con, app):
assert resp.json['err_desc'] == 'start_date and end_date are in different reference year (2022 != 2023)'
def test_get_recurrent_week(family_service, activity_service, con, app):
def request_check(request):
assert request.year == 2023
assert request.month == 4
family_service.add_soap_response('readFamily', get_xml_file('R_read_family.xml'))
activity_service.add_soap_response(
'getPersonScheduleList',
get_xml_file('R_get_person_schedule_list_with_recurrent_week.xml'),
request_check=request_check,
)
url = get_endpoint('get-recurrent-week')
params = {
'person_id': '613880',
'activity_id': 'A10049327682',
'ref_date': '2023-04-01',
}
resp = app.get(url + '?family_id=1312', params=params)
assert resp.json['err'] == 0
Link.objects.create(resource=con, family_id='1312', name_id='local')
resp = app.get(url + '?NameID=local', params=params)
assert resp.json['err'] == 0
assert resp.json['data'] == [
{
'id': '1-B',
'day': 'Lundi',
'label': 'PAI PANIER 22/23',
'overlaps': ['1-X'],
'text': 'Lundi PAI PANIER 22/23',
},
{
'id': '1-X',
'day': 'Lundi',
'label': 'RESTAURATION SCOLAIRE 22/23',
'overlaps': ['1-B'],
'text': 'Lundi RESTAURATION SCOLAIRE 22/23',
},
{
'id': '2-B',
'day': 'Mardi',
'label': 'PAI PANIER 22/23',
'overlaps': ['2-X'],
'text': 'Mardi PAI PANIER 22/23',
},
{
'id': '2-X',
'day': 'Mardi',
'label': 'RESTAURATION SCOLAIRE 22/23',
'overlaps': ['2-B'],
'text': 'Mardi RESTAURATION SCOLAIRE 22/23',
},
{
'id': '4-B',
'day': 'Jeudi',
'label': 'PAI PANIER 22/23',
'overlaps': ['4-X'],
'text': 'Jeudi PAI PANIER 22/23',
},
{
'id': '4-X',
'day': 'Jeudi',
'label': 'RESTAURATION SCOLAIRE 22/23',
'overlaps': ['4-B'],
'text': 'Jeudi RESTAURATION SCOLAIRE 22/23',
},
{
'id': '5-B',
'day': 'Vendredi',
'label': 'PAI PANIER 22/23',
'overlaps': ['5-X'],
'text': 'Vendredi PAI PANIER 22/23',
},
{
'id': '5-X',
'day': 'Vendredi',
'label': 'RESTAURATION SCOLAIRE 22/23',
'overlaps': ['5-B'],
'text': 'Vendredi RESTAURATION SCOLAIRE 22/23',
},
]
assert resp.json['meta'] == {'date_min_prev': '2023-03-27'}
params['activity_id'] = 'plop'
resp = app.get(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'No week calendar for activity plop on 2023-04-01'
def test_get_recurrent_week_not_linked_error(con, app):
url = get_endpoint('get-recurrent-week')
params = {
'person_id': '613880',
'activity_id': 'A10049327682',
'ref_date': '2023-04-01',
}
resp = app.get(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
def test_get_recurrent_week_person_not_found(family_service, con, app):
family_service.add_soap_response('readFamily', get_xml_file('R_read_family.xml'))
url = get_endpoint('get-recurrent-week')
params = {
'person_id': '000000',
'activity_id': 'A10049327682',
'ref_date': '2023-04-01',
}
resp = app.get(url + '?family_id=1312', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no '000000' RL or child on '1312' family"
# def test_update_recurrent_week(family_service, activity_service, con, app):
# def request_check(request):
# assert serialize_object(request.dayWeekInfoList) == [
# {'dayNum': 1, 'isPresent': True, 'isOpen': None, 'calendarLetter': 'B'},
# {'dayNum': 2, 'isPresent': True, 'isOpen': None, 'calendarLetter': 'C'},
# ]
# family_service.add_soap_response('readFamily', get_xml_file('R_read_family.xml'))
# activity_service.add_soap_response(
# 'getPersonScheduleList',
# get_xml_file('R_update_week_calendar.xml'),
# request_check=request_check,
# )
# url = get_endpoint('update_recurrent_week')
# params = {
# 'person_id': '613880',
# 'activity_id': 'A10049327682',
# 'start_date': '2023-04-01',
# 'end_date': '2023-04-30',
# 'recurrent_week': ['1-X', '2-B'],
# }
# resp = app.post_json(url + '?family_id=311323', params=params)
# assert resp.json['err'] == 0
# Link.objects.create(resource=con, family_id='311323', name_id='local')
# resp = app.post_json(url + '?NameID=local', params=params)
# assert resp.json['err'] == 0
# assert resp.json['data'] == []
def test_update_recurrent_week_not_linked_error(con, app):
url = get_endpoint('update-recurrent-week')
params = {
'person_id': '613880',
'activity_id': 'A10049327682',
'start_date': '2023-04-01',
'end_date': '',
'recurrent_week': ['1-X', '2-B'],
}
resp = app.post_json(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
def test_update_recurrent_week_person_not_found(family_service, con, app):
family_service.add_soap_response('readFamily', get_xml_file('R_read_family.xml'))
url = get_endpoint('update-recurrent-week')
params = {
'person_id': '000000',
'activity_id': 'A10049327682',
'start_date': '2023-04-01',
'end_date': '',
'recurrent_week': ['1-X', '2-B'],
}
resp = app.post_json(url + '?family_id=1312', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no '000000' RL or child on '1312' family"
def test_read_school_list_address_and_level(site_service, con, app):
site_service.add_soap_response(
'readSchoolForAdressAndLevel', get_xml_file('R_read_school_for_adress_and_level.xml')