toulouse-maelis: add endpoint to list schools for level and address (#72747)
gitea-wip/passerelle/pipeline/pr-main This commit looks good Details

This commit is contained in:
Serghei Mihai 2023-01-05 16:49:31 +01:00
parent 5c40ae304d
commit 1e401a1c96
3 changed files with 104 additions and 0 deletions

View File

@ -1921,6 +1921,35 @@ class ToulouseMaelis(BaseResource, HTTPResource):
def read_exemption_reasons_list(self, request):
return {'data': self.get_referential('DerogReason')}
@endpoint(
display_category='Inscriptions',
description="Liste les écoles pour une adresse et niveau scolaire",
name='read-schools-for-address-and-level',
perm='can_access',
parameters={
'year': {'description': 'Année', 'example_value': '2022'},
'id_street': {'description': 'Identifiant de la voie', 'example_value': '2317'},
'num': {'description': 'Numero dans la voie', 'example_value': '4'},
'comp': {'description': 'Complément d\'adresse (bis, ...)'},
'level': {'description': 'Niveau scolaire'},
},
)
def read_schools_for_address_and_level(self, request, id_street, year, num, comp=None, level=None):
data = {'schoolYear': year, 'adresse': {'idStreet': id_street, 'num': num}}
if level:
data['levelCode'] = level
if comp:
data['adresse']['numComp'] = comp
response = self.call(
'Site', 'readSchoolForAdressAndLevel', readSchoolForAdressAndLevelRequestBean=data
)
data = []
for item in serialize_object(response):
item['id'] = item['idSchool']
item['text'] = item['schoolName']
data.append(item)
return {'data': serialize_object(data)}
class Link(models.Model):
resource = models.ForeignKey(ToulouseMaelis, on_delete=models.CASCADE)

View File

@ -0,0 +1,62 @@
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:readSchoolForAdressAndLevelResponse xmlns:ns2="site.ws.maelis.sigec.com">
<schoolList>
<natureCode>M</natureCode><natureLibelle>MATERNELLE</natureLibelle><level>Section petit</level><levelCode>PS</levelCode><idSchool>2465</idSchool><schoolName>CALAS MATERNELLE</schoolName>
<adresse>
<street1>RUE ACHILLE VIADIEU</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FREZOULS CAROLINE</headmaster>
</schoolList>
<schoolList>
<natureCode>M</natureCode><natureLibelle>MATERNELLE</natureLibelle><level>Section moyen</level><levelCode>MS</levelCode><idSchool>2465</idSchool><schoolName>CALAS MATERNELLE</schoolName>
<adresse>
<street1>RUE ACHILLE VIADIEU</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FREZOULS CAROLINE</headmaster>
</schoolList>
<schoolList>
<natureCode>M</natureCode><natureLibelle>MATERNELLE</natureLibelle><level>Section grand</level><levelCode>GS</levelCode><idSchool>2465</idSchool><schoolName>CALAS MATERNELLE</schoolName>
<adresse>
<street1>RUE ACHILLE VIADIEU</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FREZOULS CAROLINE</headmaster>
</schoolList>
<schoolList>
<natureCode>E</natureCode><natureLibelle>ELEMENTAIRE</natureLibelle><level>Cours préparatoire</level><levelCode>CP</levelCode><idSchool>2435</idSchool><schoolName>DUPONT PIERRE ELEMENTAIRE</schoolName>
<adresse>
<street1>GRANDE-RUE SAINT MICHEL</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FOURCADE MARIE-SYLVIE</headmaster>
</schoolList>
<schoolList>
<natureCode>E</natureCode><natureLibelle>ELEMENTAIRE</natureLibelle><level>Cours élémentaire 1</level><levelCode>CE1</levelCode><idSchool>2435</idSchool><schoolName>DUPONT PIERRE ELEMENTAIRE</schoolName>
<adresse>
<street1>GRANDE-RUE SAINT MICHEL</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FOURCADE MARIE-SYLVIE</headmaster>
</schoolList>
<schoolList>
<natureCode>E</natureCode><natureLibelle>ELEMENTAIRE</natureLibelle><level>Cours élémentaire 2</level><levelCode>CE2</levelCode><idSchool>2435</idSchool><schoolName>DUPONT PIERRE ELEMENTAIRE</schoolName>
<adresse>
<street1>GRANDE-RUE SAINT MICHEL</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FOURCADE MARIE-SYLVIE</headmaster>
</schoolList>
<schoolList>
<natureCode>E</natureCode><natureLibelle>ELEMENTAIRE</natureLibelle><level>Cours moyen 1</level><levelCode>CM1</levelCode><idSchool>2435</idSchool><schoolName>DUPONT PIERRE ELEMENTAIRE</schoolName>
<adresse>
<street1>GRANDE-RUE SAINT MICHEL</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FOURCADE MARIE-SYLVIE</headmaster>
</schoolList>
<schoolList>
<natureCode>E</natureCode><natureLibelle>ELEMENTAIRE</natureLibelle><level>Cours moyen 2</level><levelCode>CM2</levelCode><idSchool>2435</idSchool><schoolName>DUPONT PIERRE ELEMENTAIRE</schoolName>
<adresse>
<street1>GRANDE-RUE SAINT MICHEL</street1><zipcode>31400</zipcode><town>TOULOUSE</town>
</adresse>
<headmaster>FOURCADE MARIE-SYLVIE</headmaster>
</schoolList>
</ns2:readSchoolForAdressAndLevelResponse>
</soap:Body>
</soap:Envelope>

View File

@ -4297,3 +4297,16 @@ def test_update_child_agenda_date_error(con, app):
resp = app.post_json(url + '?NameID=local', params=params, status=400)
assert resp.json['err'] == 'bad-request'
assert resp.json['err_desc'] == 'start_date and end_date are in different reference year (2022 != 2023)'
def test_read_school_list_address_and_level(site_service, con, app):
site_service.add_soap_response(
'readSchoolForAdressAndLevel', get_xml_file('R_read_school_for_adress_and_level.xml')
)
url = get_endpoint('read-schools-for-address-and-level')
resp = app.get(url, params={'id_street': '2317', 'num': '4', 'year': '2022'})
assert resp.json['err'] == 0
assert len(resp.json['data']) == 8
for item in resp.json['data']:
assert 'id' in item
assert 'text' in item