toulouse-maelis: ajout d'un référentiel pour lister les natures des activités proposées (#73724) #50
|
@ -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)
|
||||
|
|
|
@ -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>
|
|
@ -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'},
|
||||
],
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue