toulouse-maelis: normalize service referential (#86068)
This commit is contained in:
parent
93c6224357
commit
c3557f628a
|
@ -415,7 +415,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
self.trigger_subscriptions_cron()
|
||||
self.update_referentials()
|
||||
|
||||
def get_referential(self, referential_name, id=None, q=None, limit=None, distinct=True):
|
||||
def get_referential(self, referential_name, id=None, q=None, limit=None, distinct=True, **kwargs):
|
||||
if id is not None:
|
||||
queryset = self.referential.filter(referential_name=referential_name, item_id=id)
|
||||
else:
|
||||
|
@ -423,6 +423,9 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
if q:
|
||||
queryset = queryset.filter(item_unaccent_text__icontains=simplify(q))
|
||||
|
||||
if kwargs:
|
||||
queryset = queryset.filter(**kwargs)
|
||||
|
||||
if distinct:
|
||||
queryset = queryset.distinct('resource', 'referential_name', 'item_text')
|
||||
|
||||
|
@ -1158,6 +1161,24 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
def read_rl_indicator_list(self, request, id=None, q=None, limit=None, distinct=True):
|
||||
return {'data': self.get_referential('RLIndicator')}
|
||||
|
||||
@endpoint(
|
||||
display_category='Inscriptions',
|
||||
description='Lister les services de la ville',
|
||||
name='read-service-list',
|
||||
parameters={
|
||||
'id': {'description': 'Identifiant de l’enregistrement'},
|
||||
'q': {'description': 'Recherche en texte intégral'},
|
||||
'limit': {'description': 'Nombre maximal de résultats; doit être inférieur à 20.'},
|
||||
'distinct': {'description': 'Ne pas inclure les valeurs dupliquées'},
|
||||
'direction_id': {'description': 'Numéro de la direction sur laquelle filtrer'},
|
||||
},
|
||||
)
|
||||
def read_service_list(self, request, id=None, q=None, limit=None, distinct=True, direction_id=None):
|
||||
kwargs = {}
|
||||
if direction_id:
|
||||
kwargs['item_data__idDir'] = direction_id
|
||||
return {'data': self.get_referential('Service', id, q, limit, distinct, **kwargs)}
|
||||
|
||||
@endpoint(
|
||||
display_category='Famille',
|
||||
description='Lister les sexes',
|
||||
|
@ -3342,18 +3363,6 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
def read_direction_list(self, request):
|
||||
return {'data': self.get_referential('Direct')}
|
||||
|
||||
@endpoint(
|
||||
display_category='Inscriptions',
|
||||
description='Lister les services de la ville',
|
||||
name='read-service-list',
|
||||
parameters={'direction_id': {'description': 'Numéro de la direction sur laquelle filtrer'}},
|
||||
)
|
||||
def read_service_list(self, request, direction_id=None):
|
||||
queryset = self.referential.filter(referential_name='Service')
|
||||
if direction_id:
|
||||
queryset = queryset.filter(item_data__idDir=direction_id)
|
||||
return {'data': [x.item_data for x in queryset]}
|
||||
|
||||
@endpoint(
|
||||
display_category='Inscriptions',
|
||||
description='Lister les indicateurs pour les activités petite enfance',
|
||||
|
|
|
@ -1348,6 +1348,23 @@ def test_read_service_list(con, app):
|
|||
},
|
||||
]
|
||||
|
||||
resp = app.get(url + '?id=A10049329043')
|
||||
assert resp.json['data'] == [
|
||||
{
|
||||
'id': 'A10049329043',
|
||||
'lib1': 'Accueil de loisirs',
|
||||
'lib2': None,
|
||||
'text': 'Accueil de loisirs',
|
||||
'idDir': 'A10049327624',
|
||||
'direction': {
|
||||
'id': 'A10049327624',
|
||||
'lib1': 'DEL',
|
||||
'lib2': 'Direction enfance et loisirs',
|
||||
'text': 'DEL',
|
||||
},
|
||||
}
|
||||
]
|
||||
|
||||
resp = app.get(url + '?direction_id=A10049327624')
|
||||
assert resp.json['data'] == [
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue