toulouse-foederis: add count parameter to data source endpoints (#77526) #326

Merged
csechet merged 1 commits from wip/77526-ajouter-un-parametre-count into main 2023-07-20 14:40:05 +02:00
2 changed files with 29 additions and 26 deletions

View File

@ -317,7 +317,7 @@ class Resource(BaseResource, HTTPResource):
@property
def referentiels_documents(self):
return self.documents.filter(
external_id__in=[document_id for document_id, _, __ in self.REFERENTIELS]
external_id__in=[document_id for document_id, _, __, ___ in self.REFERENTIELS]
)
@property
@ -345,9 +345,12 @@ class Resource(BaseResource, HTTPResource):
raise requests.RequestException('code field is not 200, message=%s' % data.get('message'))
return data.get('results', [])
def update_referentiel(self, document_id, path, parent):
def update_referentiel(self, document_id, path, parent, count):
try:
results = self.http_request('GET', f'{path}?viewIntegrationName=api_publik')
params = {'viewIntegrationName': 'api_publik'}
if count is not None:
params['count'] = count
results = self.http_request('GET', f'{path}', params=params)
except requests.RequestException:
raise UpdateError(_('Service is unavailable'))
@ -469,16 +472,16 @@ class Resource(BaseResource, HTTPResource):
REFERENTIELS = [
# document_id, path, parent fkey
('origine_candidature', 'data/origine_candidature', None),
('civilite', 'data/civilite', None),
('nationalite', 'data/nationalite1', None),
('situation_actuelle', 'data/situation_actuelle', None),
('type_emploi', 'data/type_emploi', None),
('domaine_emploi', 'data/domaine_emploi', None),
('sous_domaine_emploi', 'data/sous_domaine_emploi', 'domaine_emploi'),
('emploi', 'custom/emploi', 'sous_domaine_emploi'),
('niveau_diplome', 'data/niveau_diplome1', None),
('habilitation', 'data/habilitation', None),
('origine_candidature', 'data/origine_candidature', None, 200),
('civilite', 'data/civilite', None, 200),
('nationalite', 'data/nationalite1', None, 200),
('situation_actuelle', 'data/situation_actuelle', None, 200),
('type_emploi', 'data/type_emploi', None, 200),
('domaine_emploi', 'data/domaine_emploi', None, 200),
('sous_domaine_emploi', 'data/sous_domaine_emploi', 'domaine_emploi', 200),
('emploi', 'custom/emploi', 'sous_domaine_emploi', None),
('niveau_diplome', 'data/niveau_diplome1', None, 200),
('habilitation', 'data/habilitation', None, 200),
]
REFERENTIELS_FKEYS = {
@ -496,8 +499,8 @@ class Resource(BaseResource, HTTPResource):
}
def update_referentiels(self):
for document_id, path, parent in self.REFERENTIELS:
self.update_referentiel(document_id, path, parent)
for document_id, path, parent, count in self.REFERENTIELS:
self.update_referentiel(document_id, path, parent, count)
self.update_announces()
def hourly(self):
@ -511,7 +514,7 @@ class Resource(BaseResource, HTTPResource):
@endpoint(
description=_('Get data source'),
long_description=_('Available datasources: %s')
% ', '.join(document_id.replace('_', '-') for document_id, _, __ in REFERENTIELS),
% ', '.join(document_id.replace('_', '-') for document_id, _, __, ___ in REFERENTIELS),
name='ds',
pattern=r'^(?P<name>[a-z_-]+)/$',
example_pattern='{name}/',
@ -523,7 +526,7 @@ class Resource(BaseResource, HTTPResource):
)
def datasource(self, request, name, parent=None):
name = name.replace('-', '_')
for document_id, _, __ in self.REFERENTIELS:
for document_id, _, __, ___ in self.REFERENTIELS:
if document_id == name:
break
else:

View File

@ -37,37 +37,37 @@ def get_json_content(name):
HTTP_MOCKS = {
'type-emploi': {
'path': r'^/.*/data/type_emploi$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('type_emploi'),
},
'origine-candidature': {
'path': r'^/.*/data/origine_candidature$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('origine_candidature'),
},
'civilite': {
'path': r'^/.*/data/civilite$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('civilite'),
},
'nationalite': {
'path': r'^/.*/data/nationalite1$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('nationalite1'),
},
'situation-actuelle': {
'path': r'^/.*/data/situation_actuelle$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('situation_actuelle'),
},
'domaine-emploi': {
'path': r'^/.*/data/domaine_emploi$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('domaine_emploi'),
},
'sous-domaine-emploi': {
'path': r'^/.*/data/sous_domaine_emploi$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('sous_domaine_emploi'),
},
'emploi': {
@ -77,12 +77,12 @@ HTTP_MOCKS = {
},
'niveau-diplome': {
'path': r'^/.*/data/niveau_diplome1$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('niveau_diplome1'),
},
'habilitation': {
'path': r'^.*/data/habilitation$',
'query': 'viewIntegrationName=api_publik',
'query': 'viewIntegrationName=api_publik&count=200',
'content': get_json_content('habilitation'),
},
'annonce': {