toulouse-maelis: pouvoir listers les natures des activités auxquelles un enfant ou un RL est inscrit, par année scolaire (#75549) #161
|
@ -322,6 +322,7 @@ def remove_id_on_child(conn, child):
|
|||
del child['indicators'] # order may change
|
||||
child['subscribeSchoolList'] = [] # not managed by test yet
|
||||
child['subscribeActivityList'] = [] # not managed by test yet
|
||||
del child['subscribe_natures'] # order may change
|
||||
|
||||
|
||||
def remove_id_on_rlg(conn, rlg):
|
||||
|
@ -332,6 +333,8 @@ def remove_id_on_rlg(conn, rlg):
|
|||
rlg['indicatorList'].sort(key=lambda x: x['code'])
|
||||
rlg['quotientList'].sort(key=lambda x: (x['yearRev'], x['dateStart']))
|
||||
del rlg['indicators'] # order may change
|
||||
rlg['subscribeActivityList'] = [] # not managed by test yet
|
||||
del rlg['subscribe_natures'] # order may change
|
||||
|
||||
|
||||
def remove_id_on_family(conn, family):
|
||||
|
|
|
@ -343,6 +343,25 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
result[item['id']] = item
|
||||
data['indicators'] = result
|
||||
|
||||
def add_nature_subsciptions(self, data):
|
||||
subscribe_natures = {}
|
||||
for item in data['subscribeActivityList'] or []:
|
||||
activity_type = item.get('typeActivity')
|
||||
lguerin marked this conversation as resolved
|
||||
activity_nature = activity_type.get('natureSpec') if activity_type else None
|
||||
if not activity_nature:
|
||||
continue
|
||||
for unit in item['subscribesUnit']:
|
||||
start_year = utils.get_reference_year_from_date(unit.get('dateStart'))
|
||||
end_year = utils.get_reference_year_from_date(unit.get('dateEnd'))
|
||||
if not start_year or not end_year:
|
||||
continue
|
||||
for year in range(start_year, end_year + 1):
|
||||
school_year = '%s-%s' % (year, year + 1)
|
||||
if not subscribe_natures.get(school_year):
|
||||
subscribe_natures[school_year] = set()
|
||||
subscribe_natures[school_year].add(activity_nature['code'])
|
||||
data['subscribe_natures'] = {x: sorted(list(y)) for x, y in subscribe_natures.items()}
|
||||
|
||||
def add_text_value_to_rl_indicator(self, data):
|
||||
self.add_text_value('RLIndicator', data, ['code'])
|
||||
|
||||
|
@ -363,6 +382,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
for indicator in data['indicatorList']:
|
||||
self.add_text_value_to_child_indicator(indicator)
|
||||
self.add_indicators_field('ChildIndicator', data)
|
||||
self.add_nature_subsciptions(data)
|
||||
|
||||
def add_text_value_to_person(self, data):
|
||||
self.add_text_value('Civility', data, ['civility'])
|
||||
|
@ -382,6 +402,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
for quotient in data['quotientList']:
|
||||
self.add_text_value('Quotient', quotient, ['cdquo'])
|
||||
self.add_indicators_field('RLIndicator', data)
|
||||
self.add_nature_subsciptions(data)
|
||||
|
||||
def add_text_value_to_family(self, data):
|
||||
self.add_text_value('Category', data, ['category'])
|
||||
|
|
|
@ -238,7 +238,7 @@
|
|||
<libelle>RESTAURATION SCOLAIRE 22/23</libelle>
|
||||
<bUniStd>true</bUniStd>
|
||||
<dateStart>2023-03-01T00:00:00+01:00</dateStart>
|
||||
<dateEnd>2023-07-07T00:00:00+02:00</dateEnd>
|
||||
<dateEnd>2023-09-01T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>DUPONT PIERRE ELEMENTAIRE</place>
|
||||
<planningHebdomadaire>0010011</planningHebdomadaire>
|
||||
|
|
|
@ -237,7 +237,7 @@
|
|||
<libelle>RESTAURATION SCOLAIRE 22/23</libelle>
|
||||
<bUniStd>true</bUniStd>
|
||||
<dateStart>2023-03-01T00:00:00+01:00</dateStart>
|
||||
<dateEnd>2023-07-07T00:00:00+02:00</dateEnd>
|
||||
<dateEnd>2023-09-01T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>DUPONT PIERRE ELEMENTAIRE</place>
|
||||
<planningHebdomadaire>0010011</planningHebdomadaire>
|
||||
|
|
|
@ -238,7 +238,7 @@
|
|||
<libelle>RESTAURATION SCOLAIRE 22/23</libelle>
|
||||
<bUniStd>true</bUniStd>
|
||||
<dateStart>2023-03-01T00:00:00+01:00</dateStart>
|
||||
<dateEnd>2023-07-07T00:00:00+02:00</dateEnd>
|
||||
<dateEnd>2023-09-01T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>DUPONT PIERRE ELEMENTAIRE</place>
|
||||
<planningHebdomadaire>0010011</planningHebdomadaire>
|
||||
|
|
|
@ -1321,6 +1321,7 @@ def test_read_family(family_service, xml, con, app):
|
|||
},
|
||||
],
|
||||
'subscribeActivityList': [],
|
||||
'subscribe_natures': {},
|
||||
}
|
||||
assert sorted(resp.json['data']['RL1']['indicatorList'], key=lambda x: x['code']) == [
|
||||
{
|
||||
|
@ -1380,6 +1381,7 @@ def test_read_family(family_service, xml, con, app):
|
|||
del data['indicatorList']
|
||||
del data['indicators']
|
||||
del data['subscribeActivityList']
|
||||
del data['subscribe_natures']
|
||||
assert data == {
|
||||
'num': '613880',
|
||||
'lastname': 'DOE',
|
||||
|
@ -1519,13 +1521,20 @@ def test_read_family(family_service, xml, con, app):
|
|||
'note': None,
|
||||
},
|
||||
]
|
||||
assert [x['libelle'] for x in resp.json['data']['childList'][0]['subscribeActivityList']] == [
|
||||
'RESTAURATION SCOLAIRE 22/23',
|
||||
'CLAE MIDI 22/23',
|
||||
'CLAE MATIN 22/23',
|
||||
'SEMST2 ADL MERC. ELEM Maourine 22/23',
|
||||
'ECOLE DES SPORTS 22/23 SEMESTRE 2 - MULTIACTIVITES',
|
||||
assert [
|
||||
(x['typeActivity']['natureSpec']['code'], x['libelle'])
|
||||
for x in resp.json['data']['childList'][0]['subscribeActivityList']
|
||||
] == [
|
||||
('R', 'RESTAURATION SCOLAIRE 22/23'),
|
||||
('A', 'CLAE MIDI 22/23'),
|
||||
('A', 'CLAE MATIN 22/23'),
|
||||
('X', 'SEMST2 ADL MERC. ELEM Maourine 22/23'),
|
||||
('8', 'ECOLE DES SPORTS 22/23 SEMESTRE 2 - MULTIACTIVITES'),
|
||||
]
|
||||
assert resp.json['data']['childList'][0]['subscribe_natures'] == {
|
||||
'2022-2023': ['8', 'A', 'R', 'X'],
|
||||
'2023-2024': ['R'],
|
||||
}
|
||||
|
||||
|
||||
def test_read_family_not_linked_error(con, app):
|
||||
|
@ -1718,6 +1727,7 @@ def test_read_rl2(family_service, con, app):
|
|||
'typeActivity': None,
|
||||
}
|
||||
],
|
||||
'subscribe_natures': {},
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
ça serait pas plutôt
unit.get('dateEnd')
?Si, merci l'avoir vu !
Je n'ai pas complété les tests parce que bien que j'ai déjà rencontré ce cas d'une activité qui court sur plusieurs années scolaires, je pense qu'il s'agit d'une erreur de configuration (je n'ai pas eu de réponse à ce sujet).
J'ai testé à la main pour être sûr de ne rien avoir laissé passé d'autre ici. Dis-moi si tu préfères que je complète les tests.
Ca serait mieux avec un test plus complet, quand même :)
Fait (j'ai configuré la restauration scolaire sur 2 année).