toulouse-maelis: add ActivityNatureType referential (#73647)
gitea-wip/passerelle/pipeline/pr-main This commit looks good Details

This commit is contained in:
Nicolas Roche 2023-01-20 21:27:38 +01:00 committed by Gitea
parent d347d3b4e6
commit c4a71ede04
3 changed files with 198 additions and 0 deletions

View File

@ -161,10 +161,17 @@ class ToulouseMaelis(BaseResource, HTTPResource):
id_key, text_key = 'schoolYear', 'schoolYear'
self.update_referential(referential_name, data, id_key, text_key)
def update_activity_referentials(self):
for referential_name in ('ActivityNatureType',):
id_key, text_key = 'code', 'libelle'
data = self.get_referential_data('Activity', referential_name)
self.update_referential(referential_name, data, id_key, text_key)
def daily(self):
try:
self.update_family_referentials()
self.update_site_referentials()
self.update_activity_referentials()
except UpdateError as e:
self.logger.warning('Erreur sur la mise à jour: %s' % e)
@ -2400,6 +2407,15 @@ class ToulouseMaelis(BaseResource, HTTPResource):
)
return geojson
@endpoint(
display_category='Inscriptions',
description="Liste des natures des activités",
name='read-activity-nature-list',
perm='can_access',
)
def read_activity_nature_list(self, request):
return {'data': self.get_referential('ActivityNatureType')}
class Link(models.Model):
resource = models.ForeignKey(ToulouseMaelis, on_delete=models.CASCADE)

View File

@ -0,0 +1,142 @@
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:readActivityNatureTypeListResponse xmlns:ns2="activity.ws.maelis.sigec.com" xmlns:ns3="bean.persistence.activity.ws.maelis.sigec.com">
<activityNatureList>
<code>A</code>
<libelle>Accueil Périscolaire</libelle>
<activityTypeList>
<code>ACCMAT</code>
<libelle>Accueil du matin</libelle>
</activityTypeList>
<activityTypeList>
<code>ACCMIDI</code>
<libelle>Accueil du mercredi</libelle>
</activityTypeList>
<activityTypeList>
<code>ACCPERI</code>
<libelle>Accueil périscolaire</libelle>
</activityTypeList>
<activityTypeList>
<code>ACCSOIR</code>
<libelle>Accueil du soir</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>P</code>
<libelle>Loisirs</libelle>
<activityTypeList>
<code>AIAR</code>
<libelle>ART DE L'IMAGE - ACTIVITE REGULIERE</libelle>
</activityTypeList>
<activityTypeList>
<code>APS</code>
<libelle>ART PLASTIQUE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>CIS</code>
<libelle>CIRQUE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>CS</code>
<libelle>CULTURE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>DS</code>
<libelle>DANSE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>LOI_ADU</code>
<libelle>Loisirs Adultes</libelle>
</activityTypeList>
<activityTypeList>
<code>MS</code>
<libelle>MUSIQUE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>MSE</code>
<libelle>MUSIQUE - SEJOUR</libelle>
</activityTypeList>
<activityTypeList>
<code>RS</code>
<libelle>RANDONNEE - SORTIE</libelle>
</activityTypeList>
<activityTypeList>
<code>SAR</code>
<libelle>SPORT - ACTIVITE REGULIERE</libelle>
</activityTypeList>
<activityTypeList>
<code>SST</code>
<libelle>SPORT - STAGE</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>E</code>
<libelle>Petite Enfance</libelle>
<activityTypeList>
<code>CRECHCO</code>
<libelle>Crèche collective</libelle>
</activityTypeList>
<activityTypeList>
<code>CRECHFAM</code>
<libelle>Crèche familiale</libelle>
</activityTypeList>
<activityTypeList>
<code>HALTG</code>
<libelle>Halte garderie</libelle>
</activityTypeList>
<activityTypeList>
<code>MA</code>
<libelle>Multi accueil</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>L</code>
<libelle>Loisirs Enfants</libelle>
<activityTypeList>
<code>LOI_ANN</code>
<libelle>Loisirs Enfants - Annuel</libelle>
</activityTypeList>
<activityTypeList>
<code>LOI_SOR</code>
<libelle>Loisirs - Sortie</libelle>
</activityTypeList>
<activityTypeList>
<code>LOI_STA</code>
<libelle>Loisirs - Stage</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>S</code>
<libelle>Loisirs Senior</libelle>
<activityTypeList>
<code>LOI_SEN</code>
<libelle>Loisirs Senior</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>V</code>
<libelle>Vacances Enfants</libelle>
<activityTypeList>
<code>LOI_VAC</code>
<libelle>Loisirs - Vacances</libelle>
</activityTypeList>
</activityNatureList>
<activityNatureList>
<code>R</code>
<libelle>Restauration Scolaire</libelle>
<activityTypeList>
<code>RESTENS</code>
<libelle>Restauration enseignant</libelle>
</activityTypeList>
<activityTypeList>
<code>RESTSCOL</code>
<libelle>Restauration scolaire enfant</libelle>
</activityTypeList>
<activityTypeList>
<code>RESTSEN</code>
<libelle>Restauration Senior</libelle>
</activityTypeList>
</activityNatureList>
</ns2:readActivityNatureTypeListResponse>
</soap:Body>
</soap:Envelope>

View File

@ -134,6 +134,13 @@ def django_db_setup(django_db_setup, django_db_blocker):
wsdl_content=get_xml_file('FamilyService.wsdl'),
settings=Settings(strict=False, xsd_ignore_sequence_order=True),
)
activity_service = ResponsesSoap(
wsdl_url='https://example.org/ActivityService?wsdl',
wsdl_content=get_xml_file('ActivityService.wsdl'),
settings=Settings(strict=False, xsd_ignore_sequence_order=True),
)
with family_service() as soap_mock:
soap_mock.add_soap_response('readCategoryList', get_xml_file('R_read_category_list.xml'))
soap_mock.add_soap_response(
@ -158,6 +165,11 @@ def django_db_setup(django_db_setup, django_db_blocker):
site_mock.add_soap_response('readLevelList', get_xml_file('R_read_level_list.xml'))
site_mock.add_soap_response('readDerogReasonList', get_xml_file('R_read_derog_reason_list.xml'))
con.update_site_referentials()
with activity_service() as activity_mock:
activity_mock.add_soap_response(
'readActivityNatureTypeList', get_xml_file('R_read_activity_nature_type_list.xml')
)
con.update_activity_referentials()
# reset change in zeep private interface to bypass clear_cache fixture
from zeep.cache import InMemoryCache
@ -312,6 +324,7 @@ def test_update_referential(mocked_get, con):
def test_cron(db):
assert Referential.objects.filter(referential_name='Category').count() == 3
assert sorted(list({x.referential_name for x in Referential.objects.all()})) == [
'ActivityNatureType',
'CSP',
'Category',
'ChildIndicator',
@ -5242,3 +5255,30 @@ def test_get_person_catalog_geojson_date_error(con, app):
resp = app.get(url, 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_activity_nature_list(con, app):
url = get_endpoint('read-activity-nature-list')
resp = app.get(url)
assert resp.json['err'] == 0
assert [(x['id'], x['text']) for x in resp.json['data']] == [
('A', 'Accueil Périscolaire'),
('P', 'Loisirs'),
('L', 'Loisirs Enfants'),
('S', 'Loisirs Senior'),
('E', 'Petite Enfance'),
('R', 'Restauration Scolaire'),
('V', 'Vacances Enfants'),
]
assert resp.json['data'][0] == {
'id': 'A',
'code': 'A',
'text': 'Accueil Périscolaire',
'libelle': 'Accueil Périscolaire',
'activityTypeList': [
{'code': 'ACCMAT', 'libelle': 'Accueil du matin'},
{'code': 'ACCMIDI', 'libelle': 'Accueil du mercredi'},
{'code': 'ACCPERI', 'libelle': 'Accueil périscolaire'},
{'code': 'ACCSOIR', 'libelle': 'Accueil du soir'},
],
}