toulouse-maelis: réservations extra-scolaire (#75144) #136
|
@ -46,6 +46,43 @@ BOOKING_SCHEMA = {
|
|||
],
|
||||
}
|
||||
|
||||
BOOKING_ACTIVITY_SCHEMA = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'person_id': {
|
||||
'type': 'string',
|
||||
'minLength': 1,
|
||||
'maxLength': 8,
|
||||
},
|
||||
'activity_id': {
|
||||
'type': 'string',
|
||||
'pattern': '^[A-Za-z0-9]+$',
|
||||
},
|
||||
'booking_list': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'string',
|
||||
'pattern': '^[A-Za-z0-9]+:[A-Za-z0-9]+:[A-Za-z0-9]+:[0-9]{4}-[0-9]{2}-[0-9]{2}$',
|
||||
},
|
||||
},
|
||||
'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}$',
|
||||
},
|
||||
},
|
||||
'required': [
|
||||
'person_id',
|
||||
'activity_id',
|
||||
'booking_list',
|
||||
'start_date',
|
||||
'end_date',
|
||||
],
|
||||
}
|
||||
|
||||
SUBSCRIPTION_SCHEMA = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
|
|
|
@ -1813,7 +1813,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
activity = schedule['activity']
|
||||
if not activity['activityType']['natureSpec']:
|
||||
continue
|
||||
if activity['activityType']['natureSpec']['code'] not in ['A', 'R']:
|
||||
if activity['activityType']['natureSpec']['code'] not in ['A', 'R', 'X']:
|
||||
continue
|
||||
activity_id = activity['idAct']
|
||||
many_units = len(schedule['unitScheduleList']) > 1
|
||||
|
@ -1827,7 +1827,10 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
% (child_id, activity_id, day['day'].strftime(utils.json_date_format)),
|
||||
'text': dateformat.format(day['day'], 'l j F Y'),
|
||||
'prefill': day['scheduledPresence'] > 0 or day['realPresence'] > 1,
|
||||
'disabled': day['status'] != 'WRITABLE',
|
||||
'disabled': (
|
||||
day['status'] != 'WRITABLE'
|
||||
or activity['activityType']['natureSpec']['code'] in ['X']
|
||||
),
|
||||
'details': day,
|
||||
}
|
||||
color = 'white'
|
||||
|
@ -1836,7 +1839,12 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
booking['details']['status_color'] = color
|
||||
booking['details']['activity_id'] = activity_id
|
||||
booking['details']['activity_type'] = activity['activityType']['code']
|
||||
booking['details']['activity_label'] = activity['activityType']['libelle']
|
||||
if activity['activityType']['natureSpec']['code'] in ['A', 'R']:
|
||||
booking['details']['activity_label'] = activity['activityType']['libelle']
|
||||
else:
|
||||
booking['details']['activity_label'] = (
|
||||
activity['libelle2'] or activity['libelle']
|
||||
)
|
||||
if many_units:
|
||||
booking['details']['activity_label'] += ' (%s)' % unit['unit']['libelle']
|
||||
booking['details']['child_id'] = child_id
|
||||
|
@ -2759,6 +2767,41 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
item['text'] = item['libelle']
|
||||
indicators[item['id']] = item
|
||||
response['indicators'] = indicators
|
||||
|
||||
bookings = []
|
||||
many_units = len(response.get('unitScheduleList') or []) > 1
|
||||
for day in response.get('openDayList') or []:
|
||||
day_str = day['day'].strftime(utils.json_date_format)
|
||||
for unit in response.get('unitScheduleList') or []:
|
||||
if not unit['unit']['dateDeb'] <= day['day'] <= unit['unit']['dateFin']:
|
||||
continue
|
||||
booking = {
|
||||
'id': '%s:%s:%s:%s' % (person_id, activity_id, unit['unit']['idUnit'], day_str),
|
||||
'text': dateformat.format(day['day'], 'l j F Y'),
|
||||
'prefill': False,
|
||||
'disabled': day['hasPlace'] is False,
|
||||
'details': day,
|
||||
}
|
||||
booking['details']['day_str'] = day_str
|
||||
booking['details']['status_color'] = 'white'
|
||||
booking['details']['activity_label'] = unit['unit']['libelle'] if many_units else ''
|
||||
|
||||
# uncheck other units selected on same day
|
||||
booking['details']['activity_id'] = unit['unit']['idUnit']
|
||||
|
||||
bookings.append(copy.deepcopy(booking))
|
||||
# sort bookings
|
||||
bookings = [
|
||||
(
|
||||
b['details']['day'],
|
||||
b['details']['activity_label'],
|
||||
b,
|
||||
)
|
||||
for b in bookings
|
||||
]
|
||||
bookings = sorted(bookings, key=itemgetter(0, 1))
|
||||
bookings = [b for d, l, b in bookings]
|
||||
response['agenda'] = bookings
|
||||
return {'data': response}
|
||||
|
||||
@endpoint(
|
||||
|
@ -2841,6 +2884,205 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
raise APIError(response['controlResult']['message'])
|
||||
return {'data': response}
|
||||
|
||||
def get_activity_bookings(self, family_id, person_id, activity_id, start_date, end_date):
|
||||
bookings = []
|
||||
for booking_date in rrule.rrule(rrule.MONTHLY, dtstart=start_date.replace(day=1), until=end_date):
|
||||
payload = {
|
||||
'requestBean': {
|
||||
'numDossier': family_id,
|
||||
'numPerson': person_id,
|
||||
'year': booking_date.year,
|
||||
'month': booking_date.month,
|
||||
'idAct': activity_id,
|
||||
}
|
||||
}
|
||||
response = self.call('Activity', 'getPersonScheduleList', **payload)
|
||||
|
||||
for result_data in response or []:
|
||||
for schedule in result_data['activityScheduleList']:
|
||||
activity = schedule['activity']
|
||||
if activity['idAct'] != activity_id:
|
||||
continue
|
||||
many_units = len(schedule['unitScheduleList'] or []) > 1
|
||||
for unit in schedule['unitScheduleList'] or []:
|
||||
for day in unit['dayInfoList'] or []:
|
||||
if day['status'] in ['NO_READ', 'NO_CUSTODY']:
|
||||
continue
|
||||
booking = {
|
||||
'id': '%s:%s:%s:%s'
|
||||
% (
|
||||
person_id,
|
||||
activity_id,
|
||||
unit['unit']['idUnit'],
|
||||
day['day'].strftime(utils.json_date_format),
|
||||
),
|
||||
'text': dateformat.format(day['day'], 'l j F Y'),
|
||||
'prefill': day['scheduledPresence'] > 0,
|
||||
'disabled': day['status'] != 'WRITABLE',
|
||||
'details': day,
|
||||
}
|
||||
color = 'white'
|
||||
if booking['prefill']:
|
||||
color = 'green'
|
||||
|
||||
booking['details']['day_str'] = day['day'].strftime(utils.json_date_format)
|
||||
booking['details']['status_color'] = color
|
||||
booking['details']['activity_label'] = (
|
||||
unit['unit']['libelle'] if many_units else ''
|
||||
)
|
||||
|
||||
# uncheck other sub-units selected on same day
|
||||
booking['details']['activity_id'] = unit['unit']['idUnit']
|
||||
|
||||
# use to call maelis for booking
|
||||
booking['details']['maelis_activity_id'] = activity_id
|
||||
booking['details']['maelis_unit_id'] = unit['unit']['idUnit']
|
||||
|
||||
# use to compare from maelis errors messages
|
||||
booking['details']['maelis_day_str'] = day['day'].strftime('%d/%m/%Y')
|
||||
booking['details']['maelis_unit_label'] = unit['unit']['libelle']
|
||||
|
||||
bookings.append(copy.deepcopy(booking))
|
||||
# sort bookings
|
||||
bookings = [
|
||||
(
|
||||
b['details']['day'],
|
||||
b['details']['activity_label'],
|
||||
b,
|
||||
)
|
||||
for b in bookings
|
||||
]
|
||||
bookings = sorted(bookings, key=itemgetter(0, 1))
|
||||
bookings = [b for d, l, b in bookings]
|
||||
return bookings
|
||||
|
||||
@endpoint(
|
||||
display_category='Réservation',
|
||||
description="Obtenir l'agenda d'une activité",
|
||||
name='read-activity-agenda',
|
||||
perm='can_access',
|
||||
parameters={
|
||||
'person_id': {'description': "Numéro du responsale légal ou de l'enfant"},
|
||||
'activity_id': {'description': "Numéro de l'activité"},
|
||||
'start_date': {'description': 'Début de la période'},
|
||||
'end_date': {'description': 'Fin de la période'},
|
||||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
)
|
||||
def read_activity_agenda(
|
||||
self, request, person_id, activity_id, start_date, end_date, NameID=None, family_id=None
|
||||
):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
start_date, end_date, reference_year = self.get_start_and_end_dates(start_date, end_date)
|
||||
bookings = self.get_activity_bookings(family_id, person_id, activity_id, start_date, end_date)
|
||||
return {
|
||||
'data': bookings,
|
||||
'extra_data': {
|
||||
'start_date': start_date,
|
||||
'end_date': end_date,
|
||||
'school_year': '%s/%s' % (reference_year, reference_year + 1),
|
||||
},
|
||||
}
|
||||
|
||||
@endpoint(
|
||||
display_category='Réservation',
|
||||
description="Modifier l'agenda d'un enfant",
|
||||
name='update-activity-agenda',
|
||||
perm='can_access',
|
||||
parameters={
|
||||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
post={
|
||||
'request_body': {
|
||||
'schema': {
|
||||
'application/json': activity_schemas.BOOKING_ACTIVITY_SCHEMA,
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
def update_activity_agenda(self, request, post_data, NameID=None, family_id=None):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
person_id = post_data['person_id']
|
||||
activity_id = post_data['activity_id']
|
||||
start_date, end_date, dummy = self.get_start_and_end_dates(
|
||||
post_data['start_date'], post_data['end_date']
|
||||
)
|
||||
requested_bookings = post_data['booking_list']
|
||||
|
||||
# build list of existing booked days
|
||||
bookings = self.get_activity_bookings(family_id, person_id, activity_id, start_date, end_date)
|
||||
legacy_bookings = [b['id'] for b in bookings if b['prefill'] is True]
|
||||
available_bookings = [b['id'] for b in bookings if b['disabled'] is False]
|
||||
|
||||
updated = {}
|
||||
bookings_to_update = []
|
||||
lguerin
commented
pareil, possibilité de factoriser avec ce qui est fait dans le endpoint pareil, possibilité de factoriser avec ce qui est fait dans le endpoint `update_child_agenda` ?
nroche
commented
Non, il s'agit de 2 WS maélis différents, et la structure et le nom des champs ne sont pas les même d'un WS à l'autre. Non, il s'agit de 2 WS maélis différents, et la structure et le nom des champs ne sont pas les même d'un WS à l'autre.
ex: activity['idAct'] vs activity['idActivity']
Surtout, rien ne garanti que les WS ne vont pas évoluer indépendamment (parce que c'est le cas ailleurs).
Après oui, j'aimerais bien aussi factoriser le code, mais je pense qu'il vaut mieux ne pas le faire avant d'avoir passer l'étape de la recette par les agents à Toulouse.
|
||||
for booking_info in bookings:
|
||||
day_id = booking_info['id']
|
||||
booked = None
|
||||
action = booking_info['details']['action']
|
||||
if day_id not in available_bookings:
|
||||
# disabled or not available: not bookable
|
||||
booked = None
|
||||
elif (
|
||||
day_id not in legacy_bookings
|
||||
and day_id in requested_bookings
|
||||
and action in ['ADD_PRES_PREVI']
|
||||
):
|
||||
booked = action
|
||||
elif (
|
||||
day_id in legacy_bookings
|
||||
and day_id not in requested_bookings
|
||||
and action in ['DEL_PRES_PREVI']
|
||||
):
|
||||
booked = action
|
||||
if booked is not None:
|
||||
# no changes, don't send the day
|
||||
bookings_to_update.append(
|
||||
{
|
||||
'numPerson': person_id,
|
||||
'idAct': booking_info['details']['maelis_activity_id'],
|
||||
'idUni': booking_info['details']['maelis_unit_id'],
|
||||
'date': booking_info['details']['day_str'],
|
||||
'action': booked,
|
||||
}
|
||||
)
|
||||
updated[day_id] = {
|
||||
'activity_label': booking_info['details']['activity_label'],
|
||||
'day': booking_info['details']['day_str'],
|
||||
'booked': booked in ['ADD_PRES_PREVI'],
|
||||
}
|
||||
|
||||
if not bookings_to_update:
|
||||
# don't call maelis if no changes
|
||||
return {'updated': False, 'count': 0, 'changes': [], 'errors': []}
|
||||
payload = {
|
||||
'requestBean': {
|
||||
'numDossier': family_id,
|
||||
'unitPersonDayInfoList': bookings_to_update,
|
||||
}
|
||||
}
|
||||
response = self.call('Activity', 'updatePersonSchedule', **payload)
|
||||
|
||||
# booking errors from maelis
|
||||
if response.get('result') is False:
|
||||
for error in response['unitPersonDayInfoErrorList']:
|
||||
day_id = '%s:%s:%s:%s' % (
|
||||
error['unitPersonDayInfoBean']['numPerson'],
|
||||
error['unitPersonDayInfoBean']['idAct'],
|
||||
error['unitPersonDayInfoBean']['idUni'],
|
||||
error['unitPersonDayInfoBean']['date'].strftime(utils.json_date_format),
|
||||
)
|
||||
if updated.get(day_id):
|
||||
del updated[day_id]
|
||||
|
||||
changes = sorted(updated.values(), key=lambda x: (x['booked'], x['activity_label'], x['day']))
|
||||
return {
|
||||
'updated': True,
|
||||
'count': len(changes),
|
||||
'changes': changes,
|
||||
}
|
||||
|
||||
@endpoint(
|
||||
display_category='Inscriptions',
|
||||
description="Lecture du panier de la famille",
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<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/>
|
||||
</ns2:getPersonScheduleListResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,257 @@
|
|||
<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>A10049354913</idAct>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<activityType>
|
||||
<code>EXTMERC</code>
|
||||
<libelle>Mercredi</libelle>
|
||||
<natureSpec>
|
||||
<code>X</code>
|
||||
<libelle>Extrascolaire</libelle>
|
||||
</natureSpec>
|
||||
</activityType>
|
||||
</activity>
|
||||
<weeklyCalendar>
|
||||
<yearCalendar>2023</yearCalendar>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>1</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>2</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>3</dayNum>
|
||||
<isOpen>true</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>4</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>5</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>6</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>7</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
</weeklyCalendar>
|
||||
<unitScheduleList>
|
||||
<unit>
|
||||
<idUnit>A10049354915</idUnit>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<calendarLetter>X</calendarLetter>
|
||||
</unit>
|
||||
<dayInfoList>
|
||||
<day>2023-05-01T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-02T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-03T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-04T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-05T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-06T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-07T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-08T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-09T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-10T00: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-05-11T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-12T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-13T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-14T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-15T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-16T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-18T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-19T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-20T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-21T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-22T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-23T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-25T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-26T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-27T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-28T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-29T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-30T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-31T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>WRITABLE</ns3:status>
|
||||
<ns3:action>ADD_PRES_PREVI</ns3:action>
|
||||
</dayInfoList>
|
||||
</unitScheduleList>
|
||||
</activityScheduleList>
|
||||
</personScheduleList>
|
||||
</resultBean>
|
||||
</ns2:getPersonScheduleListResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,447 @@
|
|||
<?xml version="1.0" encoding="utf8"?>
|
||||
<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>261771</numPerson>
|
||||
<lastname>NICO</lastname>
|
||||
<firstname>LISA</firstname>
|
||||
</person>
|
||||
<activityScheduleList>
|
||||
<activity>
|
||||
<idAct>A10055597158</idAct>
|
||||
<libelle>ADL ELEMENTAIRE Maourine Avril 2023</libelle>
|
||||
<activityType>
|
||||
<code>EXTVAC</code>
|
||||
<libelle>Vacances</libelle>
|
||||
<natureSpec>
|
||||
<code>X</code>
|
||||
<libelle>Extrascolaire</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>true</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>A10055597162</idUnit>
|
||||
<libelle>Demi-journée</libelle>
|
||||
<calendarLetter>B</calendarLetter>
|
||||
</unit>
|
||||
<datePrevMin>2023-04-11T00: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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-04T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-07T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>WRITABLE</ns3:status>
|
||||
<ns3:action>ADD_PRES_PREVI</ns3:action>
|
||||
</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>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>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-21T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-25T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-28T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>A10055597164</idUnit>
|
||||
<libelle>Journée</libelle>
|
||||
<calendarLetter>C</calendarLetter>
|
||||
</unit>
|
||||
<datePrevMin>2023-04-11T00: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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-04T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-07T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>1</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>WRITABLE</ns3:status>
|
||||
<ns3:action>DEL_PRES_PREVI</ns3:action>
|
||||
</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>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-21T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-25T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-04-28T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</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>
|
|
@ -0,0 +1,508 @@
|
|||
<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>A10049327689</idAct>
|
||||
<libelle>CLAE MATIN 22/23</libelle>
|
||||
<activityType>
|
||||
<code>ACCMAT</code>
|
||||
<libelle>Accueil du matin</libelle>
|
||||
<natureSpec>
|
||||
<code>A</code>
|
||||
<libelle>Accueil Périscolaire</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>A10049327690</idUnit>
|
||||
<libelle>CLAE MATIN 22/23</libelle>
|
||||
<calendarLetter>X</calendarLetter>
|
||||
</unit>
|
||||
<dayInfoList>
|
||||
<day>2023-05-01T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-02T00: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-05-03T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-05T00: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-05-06T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-07T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-08T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-09T00: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-05-10T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-12T00: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-05-13T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-14T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-15T00: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-05-16T00: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-05-17T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-18T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-19T00: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-05-20T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-21T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-22T00: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-05-23T00: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-05-24T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-26T00: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-05-27T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-28T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-29T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-30T00: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-05-31T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
</unitScheduleList>
|
||||
</activityScheduleList>
|
||||
<activityScheduleList>
|
||||
<activity>
|
||||
<idAct>A10049354913</idAct>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<activityType>
|
||||
<code>EXTMERC</code>
|
||||
<libelle>Mercredi</libelle>
|
||||
<natureSpec>
|
||||
<code>X</code>
|
||||
<libelle>Extrascolaire</libelle>
|
||||
</natureSpec>
|
||||
</activityType>
|
||||
</activity>
|
||||
<weeklyCalendar>
|
||||
<yearCalendar>2023</yearCalendar>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>1</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>2</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>3</dayNum>
|
||||
<isOpen>true</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>4</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>5</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>6</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>7</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
</weeklyCalendar>
|
||||
<unitScheduleList>
|
||||
<unit>
|
||||
<idUnit>A10049354915</idUnit>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<calendarLetter>X</calendarLetter>
|
||||
</unit>
|
||||
<dayInfoList>
|
||||
<day>2023-05-01T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-02T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-03T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-04T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-05T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-06T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-07T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-08T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-09T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-10T00: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-05-11T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-12T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-13T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-14T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-15T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-16T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-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-05-18T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-19T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-20T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-21T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-22T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-23T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-24T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>READ_ONLY</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-25T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-26T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-27T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-28T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-29T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-30T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>NO_READ</ns3:status>
|
||||
</dayInfoList>
|
||||
<dayInfoList>
|
||||
<day>2023-05-31T00:00:00+02:00</day>
|
||||
<scheduledPresence>0</scheduledPresence>
|
||||
<realPresence>0</realPresence>
|
||||
<ns3:status>WRITABLE</ns3:status>
|
||||
<ns3:action>ADD_PRES_PREVI</ns3:action>
|
||||
</dayInfoList>
|
||||
</unitScheduleList>
|
||||
</activityScheduleList>
|
||||
</personScheduleList>
|
||||
</resultBean>
|
||||
</ns2:getPersonScheduleListResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,154 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns2:getPersonUnitInfoResponse 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">
|
||||
<getPersonUnitInfoResponseBean>
|
||||
<controlResult>
|
||||
<controlOK>true</controlOK>
|
||||
</controlResult>
|
||||
<personInfo>
|
||||
<idMaelis>S10055586371</idMaelis>
|
||||
<num>261768</num>
|
||||
<lastname>NICO</lastname>
|
||||
<firstname>BART</firstname>
|
||||
<dateBirth>2014-04-01T00:00:00+02:00</dateBirth>
|
||||
<sexe>M</sexe>
|
||||
</personInfo>
|
||||
<activity>
|
||||
<idActivity>A10049354913</idActivity>
|
||||
<libelle1>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle1>
|
||||
<activityType>
|
||||
<code>EXTMERC</code>
|
||||
<libelle>Mercredi</libelle>
|
||||
<natureSpec>
|
||||
<code>X</code>
|
||||
<libelle>Extrascolaire</libelle>
|
||||
</natureSpec>
|
||||
</activityType>
|
||||
<typInsPortal>I</typInsPortal>
|
||||
<paiementPortal>O</paiementPortal>
|
||||
</activity>
|
||||
<unit>
|
||||
<idUnit>A10049354915</idUnit>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<dateStart>2023-02-01T00:00:00+01:00</dateStart>
|
||||
<dateEnd>2023-07-07T00:00:00+02:00</dateEnd>
|
||||
</unit>
|
||||
<place>
|
||||
<idPlace>M10053212196</idPlace>
|
||||
<lib1>MAOURINE (la) ELEMENTAIRE</lib1>
|
||||
</place>
|
||||
<calendarGeneration>
|
||||
<code>NOT_REQUIRED</code>
|
||||
<value>F</value>
|
||||
</calendarGeneration>
|
||||
<weeklyCalendarActivity>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>1</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>2</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>3</dayNum>
|
||||
<isOpen>true</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>4</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>5</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>6</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>7</dayNum>
|
||||
<isOpen>false</isOpen>
|
||||
</dayWeekInfoList>
|
||||
</weeklyCalendarActivity>
|
||||
<openDayList>
|
||||
<day>2023-03-15T00:00:00+01:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-03-22T00:00:00+01:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-03-29T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-05T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-12T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-19T00:00:00+02:00</day>
|
||||
<hasPlace>false</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-05-10T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-05-17T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-05-24T00:00:00+02:00</day>
|
||||
<hasPlace>false</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-05-31T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-06-07T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-06-14T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-06-21T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-06-28T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-07-05T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<unitScheduleList>
|
||||
<unit>
|
||||
<idUnit>A10049354915</idUnit>
|
||||
<libelle>SEMST2 ADL MERC. ELEM Maourine 22/23</libelle>
|
||||
<calendarLetter>X</calendarLetter>
|
||||
<dateDeb>2023-02-01T00:00:00+01:00</dateDeb>
|
||||
<dateFin>2023-07-07T00:00:00+02:00</dateFin>
|
||||
</unit>
|
||||
</unitScheduleList>
|
||||
<billingInformation/>
|
||||
<action>ADD_SUBSCRIBE</action>
|
||||
<indicatorList>
|
||||
<code>AUT_SEUL</code>
|
||||
<libelle>Autorisation à partir seul</libelle>
|
||||
<typeDesc>NONE</typeDesc>
|
||||
</indicatorList>
|
||||
<conveyance/>
|
||||
</getPersonUnitInfoResponseBean>
|
||||
</ns2:getPersonUnitInfoResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,124 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns2:getPersonUnitInfoResponse 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">
|
||||
<getPersonUnitInfoResponseBean>
|
||||
<controlResult>
|
||||
<controlOK>true</controlOK>
|
||||
</controlResult>
|
||||
<personInfo>
|
||||
<idMaelis>S10055586371</idMaelis>
|
||||
<num>261768</num>
|
||||
<lastname>NICO</lastname>
|
||||
<firstname>BART</firstname>
|
||||
<dateBirth>2014-04-01T00:00:00+02:00</dateBirth>
|
||||
<sexe>M</sexe>
|
||||
</personInfo>
|
||||
<activity>
|
||||
<idActivity>A10055597158</idActivity>
|
||||
<libelle1>ADL ELEMENTAIRE Maourine Avril 2023</libelle1>
|
||||
<activityType>
|
||||
<code>EXTVAC</code>
|
||||
<libelle>Vacances</libelle>
|
||||
<natureSpec>
|
||||
<code>X</code>
|
||||
<libelle>Extrascolaire</libelle>
|
||||
</natureSpec>
|
||||
</activityType>
|
||||
<typInsPortal>I</typInsPortal>
|
||||
<paiementPortal>O</paiementPortal>
|
||||
</activity>
|
||||
<unit>
|
||||
<idUnit>A10055597160</idUnit>
|
||||
<libelle>ADL ELEMENTAIRE Maourine Avril 2023</libelle>
|
||||
<dateStart>2023-04-11T00:00:00+02:00</dateStart>
|
||||
<dateEnd>2023-04-21T00:00:00+02:00</dateEnd>
|
||||
</unit>
|
||||
<place>
|
||||
<idPlace>M10053212196</idPlace>
|
||||
<lib1>MAOURINE (la) ELEMENTAIRE</lib1>
|
||||
</place>
|
||||
<calendarGeneration>
|
||||
<code>REQUIRED</code>
|
||||
<value>O</value>
|
||||
</calendarGeneration>
|
||||
<weeklyCalendarActivity>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>1</dayNum>
|
||||
<isOpen>true</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>2</dayNum>
|
||||
<isOpen>true</isOpen>
|
||||
</dayWeekInfoList>
|
||||
<dayWeekInfoList>
|
||||
<dayNum>3</dayNum>
|
||||
<isOpen>true</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>
|
||||
</weeklyCalendarActivity>
|
||||
<openDayList>
|
||||
<day>2023-04-11T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-12T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-13T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-14T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-19T00:00:00+02:00</day>
|
||||
<hasPlace>false</hasPlace>
|
||||
</openDayList>
|
||||
<openDayList>
|
||||
<day>2023-04-22T00:00:00+02:00</day>
|
||||
<hasPlace>true</hasPlace>
|
||||
</openDayList>
|
||||
<unitScheduleList>
|
||||
<unit>
|
||||
<idUnit>A10055597164</idUnit>
|
||||
<libelle>Journée</libelle>
|
||||
<calendarLetter>C</calendarLetter>
|
||||
<dateDeb>2023-04-11T00:00:00+02:00</dateDeb>
|
||||
<dateFin>2023-04-21T00:00:00+02:00</dateFin>
|
||||
</unit>
|
||||
</unitScheduleList>
|
||||
<unitScheduleList>
|
||||
<unit>
|
||||
<idUnit>A10055597162</idUnit>
|
||||
<libelle>Demi-journée</libelle>
|
||||
<calendarLetter>B</calendarLetter>
|
||||
<dateDeb>2023-04-11T00:00:00+02:00</dateDeb>
|
||||
<dateFin>2023-04-21T00:00:00+02:00</dateFin>
|
||||
</unit>
|
||||
</unitScheduleList>
|
||||
<billingInformation>
|
||||
<unitPrice>19.0</unitPrice>
|
||||
</billingInformation>
|
||||
<action>ADD_SUBSCRIBE</action>
|
||||
<conveyance/>
|
||||
</getPersonUnitInfoResponseBean>
|
||||
</ns2:getPersonUnitInfoResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,27 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns2:updatePersonScheduleResponse 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>
|
||||
<result>false</result>
|
||||
<unitPersonDayInfoErrorList>
|
||||
<errorMessage>Aucune place disponible pour l'activité :SEMST2 ADL MERC. ELEM Maourine 22/23, unité :SEMST2 ADL MERC. ELEM Maourine 22/23 pour le 24/05/2023</errorMessage>
|
||||
<unitPersonDayInfoBean>
|
||||
<numPerson>261768</numPerson>
|
||||
<idAct>A10049354913</idAct>
|
||||
<idUni>A10049354915</idUni>
|
||||
<date>2023-05-24T00:00:00+02:00</date>
|
||||
</unitPersonDayInfoBean>
|
||||
</unitPersonDayInfoErrorList>
|
||||
<unitPersonDayInfoErrorList>
|
||||
<errorMessage>Aucune place disponible pour l'activité :SEMST2 ADL MERC. ELEM Maourine 22/23, unité :SEMST2 ADL MERC. ELEM Maourine 22/23 pour le 31/05/2023</errorMessage>
|
||||
<unitPersonDayInfoBean>
|
||||
<numPerson>261768</numPerson>
|
||||
<idAct>A10049354913</idAct>
|
||||
<idUni>A10049354915</idUni>
|
||||
<date>2023-05-31T00:00:00+02:00</date>
|
||||
</unitPersonDayInfoBean>
|
||||
</unitPersonDayInfoErrorList>
|
||||
</resultBean>
|
||||
</ns2:updatePersonScheduleResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -0,0 +1,18 @@
|
|||
{# Display bookings changes by activities #}
|
||||
|
||||
{% regroup form_workflow_data_ws_response.changes|dictsort:"activity_label" by activity_label as changements_par_activite %}
|
||||
|
||||
{% for changes in changements_par_activite %}
|
||||
{% if changes.grouper %}<p><strong>{{changes.grouper}} :</strong></p>{% endif %}
|
||||
{% regroup changes.list|dictsort:"booked" by booked as changements_par_statut %}
|
||||
{% for status_changes in changements_par_statut %}
|
||||
{% if status_changes.grouper %}
|
||||
<p>Réservations : {% for change in status_changes.list %}{{change.day}}{% if not forloop.last %}, {% endif %}{% endfor %}</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% for status_changes in changements_par_statut %}
|
||||
{% if not status_changes.grouper %}
|
||||
<p>Annulations : {% for change in status_changes.list %}{{change.day}}{% if not forloop.last %}, {%endif %}{% endfor %}</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
|
@ -31,6 +31,7 @@ from passerelle.contrib.toulouse_maelis.models import Link, Referential, Toulous
|
|||
from passerelle.contrib.toulouse_maelis.utils import get_public_criterias, json_date_format
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.soap import SOAPError
|
||||
from passerelle.utils.templates import render_to_string
|
||||
from tests.utils import FakedResponse, ResponsesSoap, generic_endpoint_url, setup_access_rights
|
||||
|
||||
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'toulouse_maelis')
|
||||
|
@ -4494,6 +4495,79 @@ def test_read_child_agenda_multi_units(activity_service, con, app):
|
|||
]
|
||||
|
||||
|
||||
def test_read_child_agenda_with_activity(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_with_activity.xml')
|
||||
)
|
||||
url = get_endpoint('read-child-agenda')
|
||||
|
||||
resp = app.get(url + '?family_id=1312&child_id=322423&start_date=2023-05-01&end_date=2023-05-31')
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
||||
|
||||
resp = app.get(url + '?NameID=local&child_id=322423&start_date=2023-05-01&end_date=2023-05-31')
|
||||
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['extra_data'] == {
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
'school_year': '2022/2023',
|
||||
}
|
||||
assert len(resp.json['data']) == 18
|
||||
|
||||
# extra-sco bookings ('X' nature) are displayed but disabled
|
||||
extra_sco_bookings = [x for x in resp.json['data'] if x['details']['activity_type'] == 'EXTMERC']
|
||||
assert len([x for x in extra_sco_bookings if x['details']['status'] == 'WRITABLE']) == 3
|
||||
assert all([x['disabled'] for x in extra_sco_bookings])
|
||||
|
||||
assert resp.json['data'][4:6] == [
|
||||
{
|
||||
'id': '322423:A10049354913:2023-05-10',
|
||||
'text': 'Wednesday 10 May 2023',
|
||||
'prefill': True,
|
||||
'disabled': True, # disabled
|
||||
'details': {
|
||||
'day': '2023-05-10T00:00:00+02:00',
|
||||
'scheduledPresence': 1,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'status_color': 'green',
|
||||
'activity_id': 'A10049354913',
|
||||
'activity_type': 'EXTMERC',
|
||||
'activity_label': 'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
'child_id': '322423',
|
||||
'day_str': '2023-05-10',
|
||||
'unit_id': 'A10049354915',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '322423:A10049327689:2023-05-11',
|
||||
'text': 'Thursday 11 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-11T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'status_color': 'white',
|
||||
'activity_id': 'A10049327689',
|
||||
'activity_type': 'ACCMAT',
|
||||
'activity_label': 'Accueil du matin',
|
||||
'child_id': '322423',
|
||||
'day_str': '2023-05-11',
|
||||
'unit_id': 'A10049327690',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_read_child_agenda_not_linked_error(con, app):
|
||||
url = get_endpoint('read-child-agenda')
|
||||
|
||||
|
@ -5794,6 +5868,7 @@ def test_get_person_subscription_info(activity_service, con, app):
|
|||
'indicators': {},
|
||||
'recurrent_week': [],
|
||||
'conveyance': None,
|
||||
'agenda': [],
|
||||
}
|
||||
|
||||
# no date provided
|
||||
|
@ -5926,6 +6001,7 @@ def test_get_person_subscription_info_with_recurrent_week(activity_service, con,
|
|||
'conveyance': None,
|
||||
'indicatorList': [],
|
||||
'indicators': {},
|
||||
'agenda': [],
|
||||
'recurrent_week': [
|
||||
{'id': '1-C', 'day': 'Lundi', 'label': 'Journée', 'overlaps': ['1-B'], 'text': 'Lundi Journée'},
|
||||
{
|
||||
|
@ -6043,6 +6119,246 @@ def test_get_person_subscription_info_with_indicators(activity_service, con, app
|
|||
assert 'AUT_SEUL' in resp.json['data']['indicators']
|
||||
|
||||
|
||||
def test_get_person_subscription_info_with_agenda(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonUnitInfo', get_xml_file('R_get_person_unit_info_with_open_day_list.xml')
|
||||
)
|
||||
url = get_endpoint('get-person-subscription-info')
|
||||
|
||||
params = {
|
||||
'NameID': '',
|
||||
'family_id': '322423',
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'unit_id': 'A10049354915',
|
||||
'place_id': 'M10053212196',
|
||||
'ref_date': '2023-03-11',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert len(resp.json['data']['agenda']) == 15
|
||||
assert resp.json['data']['agenda'][6:10] == [
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-10',
|
||||
'text': 'Wednesday 10 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-10T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-05-10',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-17',
|
||||
'text': 'Wednesday 17 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-17T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-05-17',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-24',
|
||||
'text': 'Wednesday 24 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': True,
|
||||
'details': {
|
||||
'day': '2023-05-24T00:00:00+02:00',
|
||||
'hasPlace': False,
|
||||
'day_str': '2023-05-24',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-31',
|
||||
'text': 'Wednesday 31 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-31T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-05-31',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_get_person_subscription_info_with_agenda_multi_units(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonUnitInfo', get_xml_file('R_get_person_unit_info_with_open_day_list_with_multi_units.xml')
|
||||
)
|
||||
url = get_endpoint('get-person-subscription-info')
|
||||
|
||||
params = {
|
||||
'NameID': '',
|
||||
'family_id': '322423',
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'unit_id': 'A10049354915',
|
||||
'place_id': 'M10053212196',
|
||||
'ref_date': '2023-03-11',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert len(resp.json['data']['agenda']) == 10
|
||||
assert resp.json['data']['agenda'] == [
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597162:2023-04-11',
|
||||
'text': 'Tuesday 11 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-11T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-11',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597164:2023-04-11',
|
||||
'text': 'Tuesday 11 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-11T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-11',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597162:2023-04-12',
|
||||
'text': 'Wednesday 12 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-12T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-12',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597164:2023-04-12',
|
||||
'text': 'Wednesday 12 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-12T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-12',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597162:2023-04-13',
|
||||
'text': 'Thursday 13 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-13T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-13',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597164:2023-04-13',
|
||||
'text': 'Thursday 13 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-13T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-13',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597162:2023-04-14',
|
||||
'text': 'Friday 14 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-14T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-14',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597164:2023-04-14',
|
||||
'text': 'Friday 14 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-14T00:00:00+02:00',
|
||||
'hasPlace': True,
|
||||
'day_str': '2023-04-14',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597162:2023-04-19',
|
||||
'text': 'Wednesday 19 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': True,
|
||||
'details': {
|
||||
'day': '2023-04-19T00:00:00+02:00',
|
||||
'hasPlace': False,
|
||||
'day_str': '2023-04-19',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10055597164:2023-04-19',
|
||||
'text': 'Wednesday 19 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': True,
|
||||
'details': {
|
||||
'day': '2023-04-19T00:00:00+02:00',
|
||||
'hasPlace': False,
|
||||
'day_str': '2023-04-19',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_get_person_subscription_info_error(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonUnitInfo',
|
||||
|
@ -6335,6 +6651,653 @@ def test_add_person_basket_subscription_with_conveyance_not_found(activity_servi
|
|||
assert resp.json['err_desc'] == 'no "plop" place defined on "afternoonJourney" conveyance'
|
||||
|
||||
|
||||
def test_read_activity_agenda(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_on_activity.xml')
|
||||
)
|
||||
url = get_endpoint('read-activity-agenda')
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
}
|
||||
|
||||
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['extra_data'] == {
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
'school_year': '2022/2023',
|
||||
}
|
||||
assert len(resp.json['data']) == 4
|
||||
assert resp.json['data'] == [
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-10',
|
||||
'text': 'Wednesday 10 May 2023',
|
||||
'prefill': True,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-10T00:00:00+02:00',
|
||||
'scheduledPresence': 1,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-05-10',
|
||||
'status_color': 'green',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
'maelis_activity_id': 'A10049354913',
|
||||
'maelis_unit_id': 'A10049354915',
|
||||
'maelis_day_str': '10/05/2023',
|
||||
'maelis_unit_label': 'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-17',
|
||||
'text': 'Wednesday 17 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-17T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-05-17',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
'maelis_activity_id': 'A10049354913',
|
||||
'maelis_unit_id': 'A10049354915',
|
||||
'maelis_day_str': '17/05/2023',
|
||||
'maelis_unit_label': 'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-24',
|
||||
'text': 'Wednesday 24 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-24T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-05-24',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
'maelis_activity_id': 'A10049354913',
|
||||
'maelis_unit_id': 'A10049354915',
|
||||
'maelis_day_str': '24/05/2023',
|
||||
'maelis_unit_label': 'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261768:A10049354913:A10049354915:2023-05-31',
|
||||
'text': 'Wednesday 31 May 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-05-31T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-05-31',
|
||||
'status_color': 'white',
|
||||
'activity_label': '',
|
||||
'activity_id': 'A10049354915',
|
||||
'maelis_activity_id': 'A10049354913',
|
||||
'maelis_unit_id': 'A10049354915',
|
||||
'maelis_day_str': '31/05/2023',
|
||||
'maelis_unit_label': 'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_read_activity_agenda_multi_units(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_on_activity_with_multi_units.xml')
|
||||
)
|
||||
url = get_endpoint('read-activity-agenda')
|
||||
params = {
|
||||
'person_id': '261771',
|
||||
'activity_id': 'A10055597158',
|
||||
'start_date': '2023-04-01',
|
||||
'end_date': '2023-04-30',
|
||||
}
|
||||
|
||||
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['extra_data'] == {
|
||||
'start_date': '2023-04-01',
|
||||
'end_date': '2023-04-30',
|
||||
'school_year': '2022/2023',
|
||||
}
|
||||
assert len(resp.json['data']) == 10
|
||||
assert resp.json['data'][:8] == [
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597162:2023-04-11',
|
||||
'text': 'Tuesday 11 April 2023',
|
||||
'prefill': True,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-11T00:00:00+02:00',
|
||||
'scheduledPresence': 1,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-11',
|
||||
'status_color': 'green',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597162',
|
||||
'maelis_day_str': '11/04/2023',
|
||||
'maelis_unit_label': 'Demi-journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597164:2023-04-11',
|
||||
'text': 'Tuesday 11 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-11T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-11',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597164',
|
||||
'maelis_day_str': '11/04/2023',
|
||||
'maelis_unit_label': 'Journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597162:2023-04-12',
|
||||
'text': 'Wednesday 12 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-12T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-12',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597162',
|
||||
'maelis_day_str': '12/04/2023',
|
||||
'maelis_unit_label': 'Demi-journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597164:2023-04-12',
|
||||
'text': 'Wednesday 12 April 2023',
|
||||
'prefill': True,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-12T00:00:00+02:00',
|
||||
'scheduledPresence': 1,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-12',
|
||||
'status_color': 'green',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597164',
|
||||
'maelis_day_str': '12/04/2023',
|
||||
'maelis_unit_label': 'Journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597162:2023-04-13',
|
||||
'text': 'Thursday 13 April 2023',
|
||||
'prefill': True,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-13T00:00:00+02:00',
|
||||
'scheduledPresence': 1,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-13',
|
||||
'status_color': 'green',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597162',
|
||||
'maelis_day_str': '13/04/2023',
|
||||
'maelis_unit_label': 'Demi-journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597164:2023-04-13',
|
||||
'text': 'Thursday 13 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-13T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-13',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597164',
|
||||
'maelis_day_str': '13/04/2023',
|
||||
'maelis_unit_label': 'Journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597162:2023-04-14',
|
||||
'text': 'Friday 14 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-14T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-14',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Demi-journée',
|
||||
'activity_id': 'A10055597162',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597162',
|
||||
'maelis_day_str': '14/04/2023',
|
||||
'maelis_unit_label': 'Demi-journée',
|
||||
},
|
||||
},
|
||||
{
|
||||
'id': '261771:A10055597158:A10055597164:2023-04-14',
|
||||
'text': 'Friday 14 April 2023',
|
||||
'prefill': False,
|
||||
'disabled': False,
|
||||
'details': {
|
||||
'day': '2023-04-14T00:00:00+02:00',
|
||||
'scheduledPresence': 0,
|
||||
'realPresence': 0,
|
||||
'status': 'WRITABLE',
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
'hasPlace': None,
|
||||
'absence': None,
|
||||
'day_str': '2023-04-14',
|
||||
'status_color': 'white',
|
||||
'activity_label': 'Journée',
|
||||
'activity_id': 'A10055597164',
|
||||
'maelis_activity_id': 'A10055597158',
|
||||
'maelis_unit_id': 'A10055597164',
|
||||
'maelis_day_str': '14/04/2023',
|
||||
'maelis_unit_label': 'Journée',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_read_activity_agenda_not_linked_error(con, app):
|
||||
url = get_endpoint('read-activity-agenda')
|
||||
|
||||
resp = app.get(
|
||||
url
|
||||
+ '?NameID=local&person_id=261768&activity_id=A10049354913&start_date=2023-05-01&end_date=2023-05-31'
|
||||
)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
|
||||
def test_read_activity_agenda_date_error(con, app):
|
||||
url = get_endpoint('read-activity-agenda')
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': 'bad',
|
||||
'end_date': '2023-08-31',
|
||||
}
|
||||
resp = app.get(url + '?family_id=1312', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'bad date format, should be YYYY-MM-DD'
|
||||
|
||||
params['start_date'] = '2022-09-01'
|
||||
params['end_date'] = 'bad'
|
||||
resp = app.get(url + '?family_id=1312', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'bad date format, should be YYYY-MM-DD'
|
||||
|
||||
params['start_date'] = '2023-09-01'
|
||||
params['end_date'] = '2023-08-31'
|
||||
resp = app.get(url + '?family_id=1312', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'start_date should be before end_date'
|
||||
|
||||
params['start_date'] = '2022-09-01'
|
||||
params['end_date'] = ('2024-08-31',)
|
||||
resp = app.get(url + '?family_id=1312', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'start_date and end_date are in different reference year (2022 != 2023)'
|
||||
|
||||
|
||||
def test_read_activity_agenda_empty(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_empty.xml')
|
||||
)
|
||||
url = get_endpoint('read-activity-agenda')
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
}
|
||||
resp = app.get(url + '?family_id=1312', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['data'] == []
|
||||
|
||||
|
||||
def test_update_activity_agenda(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_on_activity.xml')
|
||||
)
|
||||
url = get_endpoint('update-activity-agenda')
|
||||
|
||||
def request_check(request):
|
||||
assert request.numDossier == 1312
|
||||
assert len(request.unitPersonDayInfoList) == 4
|
||||
assert [dict(x) for x in serialize_object(request.unitPersonDayInfoList)] == [
|
||||
{
|
||||
'numPerson': 261768,
|
||||
'idAct': 'A10049354913',
|
||||
'idUni': 'A10049354915',
|
||||
'date': datetime.datetime(2023, 5, 10, 0, 0),
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261768,
|
||||
'idAct': 'A10049354913',
|
||||
'idUni': 'A10049354915',
|
||||
'date': datetime.datetime(2023, 5, 17, 0, 0),
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261768,
|
||||
'idAct': 'A10049354913',
|
||||
'idUni': 'A10049354915',
|
||||
'date': datetime.datetime(2023, 5, 24, 0, 0),
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261768,
|
||||
'idAct': 'A10049354913',
|
||||
'idUni': 'A10049354915',
|
||||
'date': datetime.datetime(2023, 5, 31, 0, 0),
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
},
|
||||
]
|
||||
|
||||
activity_service.add_soap_response(
|
||||
'updatePersonSchedule',
|
||||
get_xml_file('R_update_person_schedule_list_on_activity.xml'),
|
||||
request_check=request_check,
|
||||
)
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
'booking_list': [
|
||||
#'261768:A10049354913:A10049354915:2023-05-10', # remove this one
|
||||
'261768:A10049354913:A10049354915:2023-05-17', # add this one
|
||||
# add 2 others but get errors from maelis
|
||||
'261768:A10049354913:A10049354915:2023-05-24',
|
||||
'261768:A10049354913:A10049354915:2023-05-31',
|
||||
],
|
||||
}
|
||||
|
||||
resp = app.post_json(url + '?family_id=1312', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
||||
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json == {
|
||||
'updated': True,
|
||||
'count': 2,
|
||||
'changes': [
|
||||
{'activity_label': '', 'day': '2023-05-10', 'booked': False},
|
||||
{'activity_label': '', 'day': '2023-05-17', 'booked': True},
|
||||
],
|
||||
'err': 0,
|
||||
}
|
||||
|
||||
with open(os.path.join(TEST_BASE_DIR, "update_activity_agenda_template.html")) as fd:
|
||||
template = fd.read()
|
||||
message = render_to_string(template, {'form_workflow_data_ws_response': resp.json})
|
||||
assert [l.strip() for l in message.split('\n') if l.strip()] == [
|
||||
'<p>Réservations : 2023-05-17</p>',
|
||||
'<p>Annulations : 2023-05-10</p>',
|
||||
]
|
||||
|
||||
|
||||
def test_update_activity_agenda_multi_units(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_on_activity_with_multi_units.xml')
|
||||
)
|
||||
url = get_endpoint('update-activity-agenda')
|
||||
|
||||
def request_check(request):
|
||||
assert request.numDossier == 1312
|
||||
assert len(request.unitPersonDayInfoList) == 4
|
||||
assert [dict(x) for x in serialize_object(request.unitPersonDayInfoList)] == [
|
||||
{
|
||||
'numPerson': 261771,
|
||||
'idAct': 'A10055597158',
|
||||
'idUni': 'A10055597162',
|
||||
'date': datetime.datetime(2023, 4, 11, 0, 0),
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261771,
|
||||
'idAct': 'A10055597158',
|
||||
'idUni': 'A10055597162',
|
||||
'date': datetime.datetime(2023, 4, 13, 0, 0),
|
||||
'action': 'DEL_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261771,
|
||||
'idAct': 'A10055597158',
|
||||
'idUni': 'A10055597164',
|
||||
'date': datetime.datetime(2023, 4, 13, 0, 0),
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
},
|
||||
{
|
||||
'numPerson': 261771,
|
||||
'idAct': 'A10055597158',
|
||||
'idUni': 'A10055597164',
|
||||
'date': datetime.datetime(2023, 4, 14, 0, 0),
|
||||
'action': 'ADD_PRES_PREVI',
|
||||
},
|
||||
]
|
||||
|
||||
activity_service.add_soap_response(
|
||||
'updatePersonSchedule',
|
||||
get_xml_file('R_update_person_schedule.xml'),
|
||||
request_check=request_check,
|
||||
)
|
||||
|
||||
params = {
|
||||
'person_id': '261771',
|
||||
'activity_id': 'A10055597158',
|
||||
'start_date': '2023-04-11',
|
||||
'end_date': '2023-04-21',
|
||||
'booking_list': [
|
||||
# '261771:A10055597158:A10055597162:2023-04-11 # remove this one
|
||||
'261771:A10055597158:A10055597164:2023-04-12', # keep this one
|
||||
'261771:A10055597158:A10055597164:2023-04-13', # switch unit on this day
|
||||
'261771:A10055597158:A10055597164:2023-04-14', # add this one
|
||||
],
|
||||
}
|
||||
|
||||
resp = app.post_json(url + '?family_id=1312', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
||||
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json == {
|
||||
'updated': True,
|
||||
'count': 4,
|
||||
'changes': [
|
||||
{'activity_label': 'Demi-journée', 'day': '2023-04-11', 'booked': False},
|
||||
{'activity_label': 'Demi-journée', 'day': '2023-04-13', 'booked': False},
|
||||
{'activity_label': 'Journée', 'day': '2023-04-13', 'booked': True},
|
||||
{'activity_label': 'Journée', 'day': '2023-04-14', 'booked': True},
|
||||
],
|
||||
'err': 0,
|
||||
}
|
||||
|
||||
with open(os.path.join(TEST_BASE_DIR, "update_activity_agenda_template.html")) as fd:
|
||||
template = fd.read()
|
||||
message = render_to_string(template, {'form_workflow_data_ws_response': resp.json})
|
||||
assert [x.strip() for x in message.split('\n') if x.strip()] == [
|
||||
'<p><strong>Demi-journée :</strong></p>',
|
||||
'<p>Annulations : 2023-04-11, 2023-04-13</p>',
|
||||
'<p><strong>Journée :</strong></p>',
|
||||
'<p>Réservations : 2023-04-13, 2023-04-14</p>',
|
||||
]
|
||||
|
||||
|
||||
def test_update_activity_agenda_no_changes(activity_service, con, app):
|
||||
activity_service.add_soap_response(
|
||||
'getPersonScheduleList', get_xml_file('R_get_person_schedule_list_on_activity.xml')
|
||||
)
|
||||
url = get_endpoint('update-activity-agenda')
|
||||
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
'booking_list': [
|
||||
'261768:A10049354913:A10049354915:2023-05-10',
|
||||
],
|
||||
}
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json == {'changes': [], 'count': 0, 'err': 0, 'errors': [], 'updated': False}
|
||||
|
||||
|
||||
def test_update_activity_agenda_not_linked_error(con, app):
|
||||
url = get_endpoint('update-activity-agenda')
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-05-01',
|
||||
'end_date': '2023-05-31',
|
||||
'booking_list': [
|
||||
'261768:A10049354913:A10049354915:2023-05-10',
|
||||
],
|
||||
}
|
||||
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_activity_agenda_date_error(con, app):
|
||||
url = get_endpoint('update-activity-agenda')
|
||||
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': 'bad',
|
||||
'end_date': '2023-08-31',
|
||||
'booking_list': [],
|
||||
}
|
||||
resp = app.post_json(url + '?NameID=local', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "start_date: 'bad' does not match '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'"
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2022-09-01',
|
||||
'end_date': 'bad',
|
||||
'booking_list': [],
|
||||
}
|
||||
resp = app.post_json(url + '?NameID=local', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "end_date: 'bad' does not match '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'"
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2023-09-01',
|
||||
'end_date': '2023-08-31',
|
||||
'booking_list': [],
|
||||
}
|
||||
resp = app.post_json(url + '?NameID=local', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'start_date should be before end_date'
|
||||
|
||||
params = {
|
||||
'person_id': '261768',
|
||||
'activity_id': 'A10049354913',
|
||||
'start_date': '2022-09-01',
|
||||
'end_date': '2024-08-31',
|
||||
'booking_list': [],
|
||||
}
|
||||
resp = app.post_json(url + '?NameID=local', params=params, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'start_date and end_date are in different reference year (2022 != 2023)'
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_get_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
|
|
Loading…
Reference in New Issue
est-ce qu'il y aurait moyen de factoriser avec ce qui est fait dans la méthode
get_bookings
? Avoir unget_booking_for_activity
?Non, pas moyen, la configuration de maélis diffère suivant le périmètre péri-scolaie d'un côté ou loisirs/extra-scolaire de l'autre.
Ici on traite une seule activité, alors que pour le périscolaire on en traite plusieurs.
Par exemple ça diffère sur l'affichage dans le widget :
booking['details']['activity_id'] = unit['unit']['idUnit']
et aussi sur les libellés à afficher (dans le péri-sco on affiche la nature).
(là le code va devenir illisible)