2020-11-05 07:10:53 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# passerelle - uniform access to multiple data sources and services
|
|
|
|
# Copyright (C) 2019 Entr'ouvert
|
|
|
|
#
|
|
|
|
# This program is free software: you can redistribute it and/or modify it
|
|
|
|
# under the terms of the GNU Affero General Public License as published
|
|
|
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU Affero General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
2021-03-11 23:00:51 +01:00
|
|
|
import csv
|
2020-11-05 07:10:53 +01:00
|
|
|
from urllib.parse import urljoin
|
|
|
|
|
|
|
|
import requests
|
|
|
|
|
|
|
|
from django.db import models
|
2021-03-11 23:00:51 +01:00
|
|
|
from django.http import HttpResponse
|
2020-11-05 07:10:53 +01:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
2021-03-11 23:00:51 +01:00
|
|
|
from django.utils.timezone import now
|
2020-11-05 07:10:53 +01:00
|
|
|
|
|
|
|
from passerelle.base.models import BaseResource, HTTPResource
|
|
|
|
from passerelle.utils.api import endpoint
|
|
|
|
from passerelle.utils.jsonresponse import APIError
|
|
|
|
|
|
|
|
OUI_NON_ENUM = {'enum': ['Oui', 'Non']}
|
|
|
|
DATE_SCHEMA = {'type': 'string', 'format': 'date'}
|
|
|
|
|
|
|
|
|
|
|
|
class RSA13Resource(BaseResource, HTTPResource):
|
|
|
|
category = _('Business Process Connectors')
|
|
|
|
|
|
|
|
webservice_base_url = models.URLField(_('Webservice Base URL'))
|
|
|
|
|
|
|
|
log_requests_errors = False
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name = _('RSA CD13')
|
|
|
|
|
|
|
|
def request_raw(self, method, path, **kwargs):
|
|
|
|
email = kwargs.pop('email', None)
|
|
|
|
ip = kwargs.pop('ip', None)
|
|
|
|
headers = kwargs.setdefault('headers', {})
|
|
|
|
if email:
|
|
|
|
headers['X-CD13-Email'] = email
|
|
|
|
if ip:
|
|
|
|
headers['X-CD13-IP'] = ip
|
|
|
|
full_path = urljoin(self.webservice_base_url, '/api/') + path
|
|
|
|
try:
|
|
|
|
response = self.requests.request(method, full_path, **kwargs)
|
|
|
|
try:
|
|
|
|
response.json()
|
|
|
|
except ValueError:
|
|
|
|
response.raise_for_status()
|
|
|
|
raise requests.RequestException('JSON expected', response=response)
|
|
|
|
except requests.RequestException as e:
|
|
|
|
raise APIError('Server is down: %s' % e)
|
|
|
|
return response
|
|
|
|
|
|
|
|
def request(self, method, path, **kwargs):
|
|
|
|
response = self.request_raw(method, path, **kwargs)
|
|
|
|
content = response.json()
|
2021-03-11 23:00:51 +01:00
|
|
|
# CSV endpoint does not return err=
|
|
|
|
if 'err' in content and content['err'] != 0:
|
2020-11-05 07:10:53 +01:00
|
|
|
err_desc = content.get('err_code') or 'misc-error'
|
|
|
|
raise APIError(err_desc, data=content)
|
|
|
|
response.raise_for_status()
|
|
|
|
return content
|
|
|
|
|
|
|
|
def get(self, path, **kwargs):
|
|
|
|
return self.request('get', path, **kwargs)
|
|
|
|
|
|
|
|
def post(self, path, **kwargs):
|
|
|
|
return self.request('post', path, **kwargs)
|
|
|
|
|
2021-03-11 23:00:51 +01:00
|
|
|
def put(self, path, **kwargs):
|
|
|
|
return self.request('put', path, **kwargs)
|
|
|
|
|
|
|
|
def delete(self, path, **kwargs):
|
|
|
|
return self.request('delete', path, **kwargs)
|
|
|
|
|
2020-11-05 07:10:53 +01:00
|
|
|
def check_status(self):
|
|
|
|
response = self.request_raw('GET', 'check')
|
|
|
|
if response.json().get('ping') != 'pong':
|
|
|
|
raise APIError('ping/pong expected received: "%s"' % repr(response)[:1024])
|
|
|
|
|
|
|
|
def parameters(update=()):
|
|
|
|
d = {
|
|
|
|
'email': {
|
|
|
|
'description': _('Publik known email'),
|
|
|
|
'example_value': 'john.doe@example.com',
|
|
|
|
},
|
|
|
|
'ip': {
|
|
|
|
'description': _('Publik client IP'),
|
|
|
|
'example_value': '88.67.23.45',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
d.update(update)
|
|
|
|
return d
|
|
|
|
|
2021-03-11 22:59:35 +01:00
|
|
|
def response_schema(data_schema=None):
|
|
|
|
schema = {
|
2020-11-05 07:10:53 +01:00
|
|
|
'type': 'object',
|
|
|
|
'required': ['err'],
|
|
|
|
'properties': {
|
|
|
|
'err': {'enum': [0, 1]},
|
|
|
|
},
|
|
|
|
}
|
2021-03-11 22:59:35 +01:00
|
|
|
if data_schema:
|
|
|
|
schema['properties']['data'] = data_schema
|
|
|
|
return schema
|
2020-11-05 07:10:53 +01:00
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
description=_('Get nomenclature'),
|
|
|
|
long_description=_('Domain can be: MOTICLODAC, MOTIF_FIN_ACC, RESULTAT_RDV, RELANCE_RDV'),
|
|
|
|
perm='can_access',
|
|
|
|
pattern=r'^(?P<domain>[A-Z_]{1,30})/$',
|
|
|
|
example_pattern='{domain}/',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'domain': {
|
|
|
|
'description': _('Nomenclature domain'),
|
|
|
|
'example_value': 'MOTICLODAC',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
),
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['id', 'text'],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'enum': [0, 1],
|
|
|
|
},
|
|
|
|
'text': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def nomenclature(self, request, domain, email, ip=None):
|
|
|
|
return self.get('cg_ref_code/domain/%s/' % domain, email=email, ip=ip)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
description=_('List of platforms'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=1,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['id', 'dsp', 'name', 'role'],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
'name': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'dsp': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'role': {
|
|
|
|
'enum': ['Coordonnateur', 'Accompagnateur'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform(self, request, email, ip=None):
|
|
|
|
return self.get('platform/', email=email, ip=ip)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/',
|
|
|
|
description=_('Platform details'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=2,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'dsp',
|
|
|
|
'name',
|
|
|
|
'adr1',
|
|
|
|
'adr2',
|
|
|
|
'adr3',
|
|
|
|
'adr4',
|
|
|
|
'adr5',
|
|
|
|
'adr6',
|
|
|
|
'tel',
|
|
|
|
'queries',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
'name': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'dsp': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr1': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr2': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr3': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr4': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr5': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'adr6': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'tel': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'queries': {
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['id', 'name', 'count'],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
'name': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'count': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_details(self, request, platform_id, email, ip=None):
|
|
|
|
return self.get('platform/%s/' % platform_id, email=email, ip=ip)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['get', 'post'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/referent/$',
|
2021-03-12 12:53:54 +01:00
|
|
|
example_pattern='{platform_id}/referent/',
|
2020-11-05 07:10:53 +01:00
|
|
|
description_get=_('Get platform referents'),
|
|
|
|
description_post=_('Create platform referent'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
2021-04-30 22:45:04 +02:00
|
|
|
},
|
|
|
|
'statut': {
|
|
|
|
'description': _('Referent status'),
|
|
|
|
'example_value': 'Actif',
|
|
|
|
},
|
2020-11-05 07:10:53 +01:00
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=3,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
2021-04-14 21:01:51 +02:00
|
|
|
'required': ['nom', 'prenom'],
|
2020-11-05 07:10:53 +01:00
|
|
|
'properties': {
|
|
|
|
'email': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 78,
|
2021-04-30 15:15:59 +02:00
|
|
|
'pattern': '^(.*@.*)?$',
|
2020-11-05 07:10:53 +01:00
|
|
|
},
|
|
|
|
'nom': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 28,
|
|
|
|
},
|
|
|
|
'prenom': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 32,
|
|
|
|
},
|
|
|
|
'tel': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 10,
|
|
|
|
'pattern': '^[0-9]{0,10}$',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'nom',
|
|
|
|
'prenom',
|
|
|
|
'tel',
|
|
|
|
'email',
|
|
|
|
'role',
|
|
|
|
'status',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
'nom': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'prenom': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'tel': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'email': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'role': {
|
|
|
|
'enum': ['Coordonnateur', 'Accompagnateur'],
|
|
|
|
},
|
|
|
|
'statut': {
|
|
|
|
'enum': ['Actif', 'Inactif'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
2021-04-30 22:45:04 +02:00
|
|
|
def platform_referent(self, request, platform_id, email, ip=None, statut=None, post_data=None):
|
2020-11-05 07:10:53 +01:00
|
|
|
if request.method == 'GET':
|
2021-05-06 14:59:34 +02:00
|
|
|
response = self.get('platform/%s/referent/' % platform_id, email=email, ip=ip)
|
2021-04-30 22:45:04 +02:00
|
|
|
if statut:
|
2021-05-06 14:59:34 +02:00
|
|
|
data = []
|
|
|
|
for referent in response.get('data', []):
|
|
|
|
if referent.get('statut') != statut:
|
|
|
|
continue
|
|
|
|
data.append(referent)
|
|
|
|
response['data'] = data
|
|
|
|
return response
|
2020-11-05 07:10:53 +01:00
|
|
|
else:
|
|
|
|
return self.post('platform/%s/referent/' % platform_id, email=email, ip=ip, json=post_data)
|
2021-02-20 16:26:01 +01:00
|
|
|
|
2020-11-05 07:10:53 +01:00
|
|
|
# BUG, methods and post are incompatible
|
|
|
|
platform_referent.endpoint_info.methods.append('get')
|
|
|
|
|
2021-03-11 23:00:51 +01:00
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['post'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/referent/(?P<referent_id>[0-9]{1,10})/$',
|
2021-04-14 21:03:22 +02:00
|
|
|
example_pattern='{platform_id}/referent/{referent_id}/',
|
2021-03-11 23:00:51 +01:00
|
|
|
description=_('Update platform referent'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'referent_id': {
|
|
|
|
'description': _('Referent numeric identifier'),
|
|
|
|
'example_value': '9',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=3.5,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
2021-04-14 21:04:00 +02:00
|
|
|
'required': ['nom', 'prenom', 'statut'],
|
2021-03-11 23:00:51 +01:00
|
|
|
'properties': {
|
|
|
|
'email': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 78,
|
2021-04-30 15:15:59 +02:00
|
|
|
'pattern': '^(.*@.*)?$',
|
2021-03-11 23:00:51 +01:00
|
|
|
},
|
|
|
|
'nom': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 28,
|
|
|
|
},
|
|
|
|
'prenom': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 32,
|
|
|
|
},
|
|
|
|
'tel': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 10,
|
|
|
|
'pattern': '^[0-9]{0,10}$',
|
|
|
|
},
|
|
|
|
'statut': {'enum': ['C', 'A']},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_referent_update(self, request, platform_id, referent_id, email, ip=None, post_data=None):
|
|
|
|
return self.put(
|
|
|
|
'platform/%s/referent/%s/' % (platform_id, referent_id), email=email, ip=ip, json=post_data
|
|
|
|
)
|
|
|
|
|
2020-11-05 07:10:53 +01:00
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/$',
|
2021-03-12 18:16:59 +01:00
|
|
|
example_pattern='{platform_id}/beneficiaire/',
|
2020-11-05 07:10:53 +01:00
|
|
|
description_get=_('Get platform beneficiaries'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'page': {
|
|
|
|
'description': _('Page number'),
|
|
|
|
'example_value': '1',
|
|
|
|
},
|
|
|
|
'query': {
|
|
|
|
'description': _('Query numeric identifier'),
|
|
|
|
'example_value': '2',
|
|
|
|
},
|
|
|
|
'nom': {
|
2020-11-06 17:23:30 +01:00
|
|
|
'description': _('Beneficiary last name'),
|
2020-11-05 07:10:53 +01:00
|
|
|
'example_value': 'Doe',
|
|
|
|
},
|
|
|
|
'prenom': {
|
2020-11-06 17:23:30 +01:00
|
|
|
'description': _('Beneficiary last name'),
|
2020-11-05 07:10:53 +01:00
|
|
|
'example_value': 'John',
|
|
|
|
},
|
|
|
|
'matricule': {
|
2020-11-06 17:23:30 +01:00
|
|
|
'description': _('Beneficiary numeric identifier'),
|
2020-11-05 07:10:53 +01:00
|
|
|
'example_value': '1234',
|
|
|
|
},
|
|
|
|
'referent': {
|
|
|
|
'description': _('Referent numeric identifier'),
|
|
|
|
'example_value': '5678',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=4,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'civilite',
|
|
|
|
'nom',
|
|
|
|
'prenom',
|
|
|
|
'date_naissance',
|
|
|
|
'actif',
|
|
|
|
'matricule',
|
|
|
|
'commune',
|
|
|
|
'code_pi',
|
|
|
|
'referent',
|
|
|
|
'date_deb_affectation',
|
|
|
|
'consulte',
|
|
|
|
'toppersdrodevorsa',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {
|
|
|
|
'type': 'integer',
|
|
|
|
},
|
|
|
|
'civilite': {
|
|
|
|
'enum': ['MR', 'MME'],
|
|
|
|
},
|
|
|
|
'nom': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'prenom': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'date_naissance': {
|
|
|
|
'type': 'string',
|
|
|
|
'format': 'date',
|
|
|
|
},
|
|
|
|
'actif': OUI_NON_ENUM,
|
|
|
|
'matricule': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'code_postal': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'commune': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'communcode_pi': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'referent': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
'date_deb_affectation': DATE_SCHEMA,
|
|
|
|
'consulte': OUI_NON_ENUM,
|
|
|
|
'toppersdrodevorsa': OUI_NON_ENUM,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire(
|
|
|
|
self,
|
|
|
|
request,
|
|
|
|
platform_id,
|
|
|
|
email,
|
|
|
|
ip=None,
|
|
|
|
page=None,
|
|
|
|
query=None,
|
|
|
|
nom=None,
|
|
|
|
prenom=None,
|
|
|
|
matricule=None,
|
|
|
|
referent=None,
|
|
|
|
):
|
|
|
|
params = {}
|
|
|
|
for key in ['page', 'query', 'nom', 'prenom', 'matricule', 'referent']:
|
|
|
|
if key in locals():
|
|
|
|
params[key] = locals()[key]
|
|
|
|
return self.get('platform/%s/beneficiaire/' % platform_id, email=email, ip=ip, params=params)
|
|
|
|
|
2021-03-11 23:00:51 +01:00
|
|
|
CSV_DEFAULT_COLUMNS = [
|
|
|
|
"NUM_CAF",
|
|
|
|
"CODE_PER",
|
|
|
|
"NOM_PER",
|
|
|
|
"PRENOM_PER",
|
|
|
|
"DTNAI_PER",
|
|
|
|
"ACTIF_PER",
|
|
|
|
"CODE_PI",
|
|
|
|
"LIB_CODE_PI",
|
|
|
|
"TOPPERSDRODEVORSA",
|
|
|
|
"LIB_ETATDOSRSA",
|
|
|
|
"LIB_MOTIF_ETATDOSRSA",
|
|
|
|
"NB_JOUR_DEPUIS_ARR",
|
|
|
|
"DATE_DEB",
|
|
|
|
"DATE_1IERE_CONS",
|
|
|
|
"DATE_DERNIERE_CONSULT",
|
|
|
|
"DATE_REELLE_RDV",
|
|
|
|
"NUM_CINS",
|
|
|
|
"DATE_SIGN",
|
|
|
|
"DATE_DEB_CI",
|
|
|
|
"DATE_FIN_CI",
|
|
|
|
"REFERENT_CI",
|
|
|
|
"ACTION_EN_COURS",
|
|
|
|
"DELAI_REGUL",
|
|
|
|
"PROC_EN_COURS",
|
|
|
|
"REFERENT_AFFECTATION",
|
|
|
|
]
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/csv/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/csv/',
|
|
|
|
description_get=_('Get platform beneficiaries as CSV'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'page': {
|
|
|
|
'description': _('Page number'),
|
|
|
|
'example_value': '1',
|
|
|
|
},
|
|
|
|
'query': {
|
|
|
|
'description': _('Query numeric identifier'),
|
|
|
|
'example_value': '2',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=4.5,
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_csv(
|
|
|
|
self,
|
|
|
|
request,
|
|
|
|
platform_id,
|
|
|
|
email,
|
|
|
|
ip=None,
|
|
|
|
page=None,
|
|
|
|
query=None,
|
|
|
|
):
|
|
|
|
params = {}
|
|
|
|
if query:
|
|
|
|
params['query'] = query
|
|
|
|
content = self.get('platform/%s/beneficiaire/csv/' % platform_id, email=email, ip=ip, params=params)
|
|
|
|
data = content['data']
|
|
|
|
|
|
|
|
response = HttpResponse(content_type='text/csv')
|
|
|
|
date = now().strftime('%Y-%m-%d_%H:%M')
|
|
|
|
response['Content-Disposition'] = 'attachment; filename="beneficiaires-%s.csv"' % date
|
2021-05-06 15:57:23 +02:00
|
|
|
response.write(b'\xef\xbb\xbf')
|
2021-03-11 23:00:51 +01:00
|
|
|
writer = csv.writer(response, delimiter=';')
|
|
|
|
writer.writerow(self.CSV_DEFAULT_COLUMNS)
|
|
|
|
for row in data:
|
|
|
|
writer.writerow(str(row.get(col) or '') for col in self.CSV_DEFAULT_COLUMNS)
|
|
|
|
return response
|
|
|
|
|
2020-11-05 07:10:53 +01:00
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/',
|
|
|
|
description=_('Get beneficiary details'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=5,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'civilite',
|
|
|
|
'nom',
|
|
|
|
'prenom',
|
|
|
|
'date_naissance',
|
|
|
|
'actif',
|
|
|
|
'matricule',
|
|
|
|
'code_pi',
|
|
|
|
'referent',
|
|
|
|
'adresse',
|
|
|
|
'age',
|
|
|
|
'commentaire_ref',
|
|
|
|
'conjoint',
|
|
|
|
'droit',
|
|
|
|
'enfants',
|
|
|
|
'lib_code_pi',
|
|
|
|
'nomnaiss',
|
|
|
|
'numdemrsa',
|
|
|
|
'situation_familiale',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'civilite': {'enum': ['MR', 'MME']},
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
'date_naissance': DATE_SCHEMA,
|
|
|
|
'actif': OUI_NON_ENUM,
|
|
|
|
'matricule': {'type': 'string'},
|
|
|
|
'code_pi': {'type': 'string'},
|
|
|
|
'referent': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['id', 'nom', 'prenom'],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'adresse': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['adr2', 'adr3', 'adr4', 'adr5', 'adr6'],
|
|
|
|
'properties': {
|
|
|
|
'adr2': {'type': 'string'},
|
|
|
|
'adr3': {'type': 'string'},
|
|
|
|
'adr4': {'type': 'string'},
|
|
|
|
'adr5': {'type': 'string'},
|
|
|
|
'adr6': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'age': {'type': 'string'},
|
|
|
|
'commentaire_ref': {'type': 'string'},
|
|
|
|
'conjoint': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['id', 'age', 'prenom', 'nom', 'plateforme'],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'age': {'type': 'string'},
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'droit': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['date_demande', 'etat', 'motif', 'toppersdrodevorsa'],
|
|
|
|
'properties': {
|
|
|
|
'date_demande': {'type': 'string', 'format': 'date'},
|
|
|
|
'etat': {'type': 'string'},
|
|
|
|
'motif': {'type': 'string'},
|
|
|
|
'toppersdrodevorsa': OUI_NON_ENUM,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'enfants': {
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['nom', 'prenom', 'age'],
|
|
|
|
'properties': {
|
|
|
|
'age': {'type': 'string'},
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'lib_code_pi': {'type': 'string'},
|
|
|
|
'nomnaiss': {'type': 'string'},
|
|
|
|
'numdemrsa': {'type': 'string'},
|
|
|
|
'situation_familiale': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['date_debut', 'libelle'],
|
|
|
|
'properties': {
|
|
|
|
'date_debut': {'type': 'string', 'format': 'date'},
|
|
|
|
'libelle': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_detail(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get('platform/%s/beneficiaire/%s/' % (platform_id, beneficiary_id), email=email, ip=ip)
|
|
|
|
|
2021-03-11 23:00:51 +01:00
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['post'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/telephone/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/telephone/',
|
|
|
|
description=_('Create beneficiary\'s telephone'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=5.1,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['tel'],
|
|
|
|
'properties': {
|
|
|
|
'tel': {
|
|
|
|
'type': 'string',
|
|
|
|
'maxLength': 10,
|
|
|
|
'pattern': '^[0-9]{0,10}$',
|
|
|
|
},
|
|
|
|
'commentaire': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_telephone(
|
|
|
|
self, request, platform_id, beneficiary_id, email, post_data, ip=None
|
|
|
|
):
|
|
|
|
return self.post(
|
|
|
|
'platform/%s/beneficiaire/%s/telephone/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['post', 'delete'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
'telephone/(?P<numtel>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/telephone/{numtel}/',
|
|
|
|
description_post=_('Update beneficiary\'s telephone comment'),
|
|
|
|
description_delete=_('Delete beneficiary\'s telephone'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'numtel': {
|
|
|
|
'description': _('Beneficiary\'s telephone number'),
|
|
|
|
'example_value': '0699999999',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=5.2,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['commentaire'],
|
|
|
|
'properties': {
|
|
|
|
'commentaire': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_telephone_update_or_delete(
|
|
|
|
self, request, platform_id, beneficiary_id, numtel, email, post_data=None, ip=None
|
|
|
|
):
|
|
|
|
if request.method == 'POST':
|
|
|
|
return self.put(
|
|
|
|
'platform/%s/beneficiaire/%s/telephone/%s/' % (platform_id, beneficiary_id, numtel),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
if request.method == 'DELETE':
|
|
|
|
return self.delete(
|
|
|
|
'platform/%s/beneficiaire/%s/telephone/%s/' % (platform_id, beneficiary_id, numtel),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
# BUG, methods and post are incompatible
|
|
|
|
platform_beneficiaire_telephone_update_or_delete.endpoint_info.methods.append('delete')
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['post'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/email/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/email/',
|
|
|
|
description=_('Create beneficiary\'s email'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=5.1,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
2021-03-29 10:27:32 +02:00
|
|
|
'required': ['courriel'],
|
2021-03-11 23:00:51 +01:00
|
|
|
'properties': {
|
|
|
|
'courriel': {
|
|
|
|
'type': 'string',
|
2021-04-30 15:15:59 +02:00
|
|
|
'pattern': '^(.*@.*)?$',
|
2021-03-11 23:00:51 +01:00
|
|
|
},
|
|
|
|
'commentaire': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_email(self, request, platform_id, beneficiary_id, email, post_data, ip=None):
|
|
|
|
return self.post(
|
|
|
|
'platform/%s/beneficiaire/%s/email/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['post', 'delete'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
'email/(?P<courriel>[^/]+)/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/email/{courriel}/',
|
|
|
|
description_post=_('Update beneficiary\'s email comment'),
|
|
|
|
description_delete=_('Delete beneficiary\'s email'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'courriel': {
|
|
|
|
'description': _('Beneficiary\'s email number'),
|
|
|
|
'example_value': '0699999999',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=5.2,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['commentaire'],
|
|
|
|
'properties': {
|
|
|
|
'commentaire': {
|
|
|
|
'type': 'string',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_email_update_or_delete(
|
|
|
|
self, request, platform_id, beneficiary_id, courriel, email, post_data=None, ip=None
|
|
|
|
):
|
|
|
|
if request.method == 'POST':
|
|
|
|
return self.put(
|
|
|
|
'platform/%s/beneficiaire/%s/email/%s/' % (platform_id, beneficiary_id, courriel),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
if request.method == 'DELETE':
|
|
|
|
return self.delete(
|
|
|
|
'platform/%s/beneficiaire/%s/email/%s/' % (platform_id, beneficiary_id, courriel),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
# BUG, methods and post are incompatible
|
|
|
|
platform_beneficiaire_email_update_or_delete.endpoint_info.methods.append('delete')
|
|
|
|
|
2020-11-05 07:10:53 +01:00
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/transport/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/transport/',
|
|
|
|
description=_('Get beneficiary transport details'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=6,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['cumuls'],
|
|
|
|
'properties': {
|
|
|
|
'cumuls': {
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['duree', 'type'],
|
|
|
|
'properties': {
|
|
|
|
'duree': {'type': 'integer'},
|
|
|
|
'type': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_transport(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/transport/' % (platform_id, beneficiary_id), email=email, ip=ip
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/contrat/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/contrat/',
|
|
|
|
description=_('Get beneficiary contracts'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=7,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'clos',
|
|
|
|
'date_deb',
|
|
|
|
'date_fin',
|
|
|
|
'decision',
|
|
|
|
'duree',
|
|
|
|
'operateur',
|
|
|
|
'plateform',
|
|
|
|
'referent',
|
|
|
|
'retab',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'clos': OUI_NON_ENUM,
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'date_fin': DATE_SCHEMA,
|
|
|
|
'decision': {'type': 'string'},
|
|
|
|
'duree': {'type': 'integer'},
|
|
|
|
'operateur': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
'retab': OUI_NON_ENUM,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_contrat(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/contrat/' % (platform_id, beneficiary_id), email=email, ip=ip
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'contrat/(?P<contract_id>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/contrat/{contract_id}/',
|
|
|
|
description=_('Get beneficiary contract details'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'contract_id': {
|
|
|
|
'description': _('Contract numeric identifier'),
|
|
|
|
'example_value': '7',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=8,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'commentaire',
|
|
|
|
'date_clos',
|
|
|
|
'date_cvs',
|
|
|
|
'date_deb',
|
|
|
|
'date_fin',
|
|
|
|
'date_retab',
|
|
|
|
'date_sign',
|
|
|
|
'decision',
|
|
|
|
'duree',
|
|
|
|
'motif_cvs',
|
|
|
|
'operateur',
|
|
|
|
'plateforme',
|
|
|
|
'referent',
|
|
|
|
'type_contrat',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'commentaire': {'type': 'string'},
|
|
|
|
'date_clos': DATE_SCHEMA,
|
|
|
|
'date_cvs': DATE_SCHEMA,
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'date_fin': DATE_SCHEMA,
|
|
|
|
'date_retab': DATE_SCHEMA,
|
|
|
|
'date_sign': DATE_SCHEMA,
|
|
|
|
'decision': {'type': 'string'},
|
|
|
|
'duree': {'type': 'integer'},
|
|
|
|
'motif_cvs': {'type': 'string'},
|
|
|
|
'operateur': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
'referent': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': ['commentaire', 'nom', 'prenom'],
|
|
|
|
'properties': {
|
|
|
|
'commentaire': {'type': 'string'},
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'type_contrat': {'type': 'string'},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_contrat_detail(
|
|
|
|
self, request, platform_id, beneficiary_id, contract_id, email, ip=None
|
|
|
|
):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/contrat/%s/' % (platform_id, beneficiary_id, contract_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
2020-11-16 12:01:06 +01:00
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'action/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/action/',
|
|
|
|
description=_('Get beneficiary actions'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=9,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
2020-11-30 15:40:13 +01:00
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'contrat_id',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'contrat_id': {'type': 'integer'},
|
|
|
|
'libelle': {'type': 'string'},
|
|
|
|
'date_preconisation': DATE_SCHEMA,
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'date_fin': DATE_SCHEMA,
|
|
|
|
'validation': {
|
|
|
|
'enum': ['En cours', 'Oui', 'Non'],
|
|
|
|
},
|
|
|
|
'clos': OUI_NON_ENUM,
|
2020-11-16 12:01:06 +01:00
|
|
|
},
|
2020-11-30 15:40:13 +01:00
|
|
|
},
|
2020-11-16 12:01:06 +01:00
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_action(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/action/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
2020-11-16 12:50:19 +01:00
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
2021-03-11 23:00:51 +01:00
|
|
|
methods=['get', 'post'],
|
2020-11-16 12:50:19 +01:00
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'action/(?P<action_id>[0-9]{1,10})/$',
|
2021-03-11 23:00:51 +01:00
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/action/{action_id}/',
|
|
|
|
description_get=_('Get beneficiary action details'),
|
|
|
|
description_post=_('Update beneficiary action details'),
|
2020-11-16 12:50:19 +01:00
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'action_id': {
|
|
|
|
'description': _('Action numeric identifier'),
|
|
|
|
'example_value': '7',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=10,
|
2021-03-11 23:00:51 +01:00
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date_debut': DATE_SCHEMA,
|
|
|
|
'date_fin': DATE_SCHEMA,
|
|
|
|
'moticlodac': {'type': 'string'},
|
|
|
|
'commentaire_ref': {'type': 'string', 'maxLength': 1000},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
2020-11-16 12:50:19 +01:00
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'object',
|
|
|
|
'required': [
|
|
|
|
'id',
|
|
|
|
'contrat_id',
|
|
|
|
],
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'contrat_id': {'type': 'integer'},
|
|
|
|
'sac': {'type': 'string'},
|
|
|
|
'libelle': {'type': 'string'},
|
|
|
|
'date_preconisation': DATE_SCHEMA,
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'date_fin': DATE_SCHEMA,
|
|
|
|
'date_cloture': DATE_SCHEMA,
|
|
|
|
'moticlodac': {'type': 'string'},
|
|
|
|
'lib_moticlodac': {'type': 'string'},
|
|
|
|
'validation': {
|
|
|
|
'enum': ['En cours', 'Oui', 'Non'],
|
|
|
|
},
|
|
|
|
'financement': {
|
|
|
|
'properties': {
|
|
|
|
'montant_demande': {'type': 'integer'},
|
|
|
|
'montant_accorde': {'type': 'integer'},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'commentaire_ref': {'type': 'string'},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_action_detail(
|
2021-03-11 23:00:51 +01:00
|
|
|
self, request, platform_id, beneficiary_id, action_id, email, post_data=None, ip=None
|
2020-11-16 12:50:19 +01:00
|
|
|
):
|
2021-03-11 23:00:51 +01:00
|
|
|
if request.method == 'POST':
|
|
|
|
return self.put(
|
|
|
|
'platform/%s/beneficiaire/%s/action/%s/' % (platform_id, beneficiary_id, action_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/action/%s/' % (platform_id, beneficiary_id, action_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
# bug
|
|
|
|
platform_beneficiaire_action_detail.endpoint_info.methods.insert(0, 'get')
|
2020-11-30 20:40:00 +01:00
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'fondsaide/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/fondsaide/',
|
|
|
|
description=_('Get beneficiary help funds'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=11,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'cod_tfi': {'type': 'string'},
|
|
|
|
'lib_tfi': {'type': 'string'},
|
|
|
|
'demande': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'montant': {'type': 'number'},
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'avis_pi': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'montant': {'type': 'number'},
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
'avis': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'avis_sai': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'montant': {'type': 'number'},
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'clos': OUI_NON_ENUM,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_fondsaide(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/fondsaide/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'fondsaide/(?P<fondsaide_id>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/fondsaide/{fondsaide_id}/',
|
|
|
|
description=_('Get beneficiary help fund details'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'fondsaide_id': {
|
|
|
|
'description': _('Help fund numeric identifier'),
|
|
|
|
'example_value': '7',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=12,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"avis_pi": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"avis": {"type": "string"},
|
|
|
|
"date": DATE_SCHEMA,
|
|
|
|
"montant": {"type": "number"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"budget": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date_reception": {"type": "string"},
|
|
|
|
"justificatifs": {
|
|
|
|
"type": "array",
|
|
|
|
"items": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"conforme": {"type": "string"},
|
|
|
|
"date_reception": DATE_SCHEMA,
|
|
|
|
"date_relance": DATE_SCHEMA,
|
|
|
|
"num_versement": {"type": "integer"},
|
|
|
|
"reception": {"type": "string"},
|
|
|
|
"type": {"type": "string"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"nombre_versements": {"type": "integer"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"cloture": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date_cloture": DATE_SCHEMA,
|
|
|
|
"date_relance": DATE_SCHEMA,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"code_tfi": {"type": "string"},
|
|
|
|
"decision_sai": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date": DATE_SCHEMA,
|
|
|
|
"decision": {"type": "string"},
|
|
|
|
"montant": {"type": "number"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"demande": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date": DATE_SCHEMA,
|
|
|
|
"montant": {"type": "number"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"id": {"type": "integer"},
|
|
|
|
"lib_tfi": {"type": "string"},
|
|
|
|
"recours": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date_decision": DATE_SCHEMA,
|
|
|
|
"date_demande": DATE_SCHEMA,
|
|
|
|
"decision": {"type": "string"},
|
|
|
|
"montant": {"type": "string"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_fondsaide_detail(
|
|
|
|
self, request, platform_id, beneficiary_id, fondsaide_id, email, ip=None
|
|
|
|
):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/fondsaide/%s/' % (platform_id, beneficiary_id, fondsaide_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'affectation/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/affectation/',
|
|
|
|
description=_('Get beneficiary affectations'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=13,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'dispositif': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
'code_pi': {'type': 'string'},
|
|
|
|
'referent': {'type': 'string'},
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'origine': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_affectation(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/affectation/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
2021-03-11 23:00:51 +01:00
|
|
|
methods=['post'],
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'reaffectation/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/reaffectation/',
|
|
|
|
description=_('Reassign beneficiary'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=13.5,
|
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'motif': {'type': 'string'},
|
|
|
|
'commentaire_ref': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
json_schema_response=response_schema(),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_reaffectation(
|
|
|
|
self, request, platform_id, beneficiary_id, email, post_data, ip=None
|
|
|
|
):
|
|
|
|
return self.post(
|
|
|
|
'platform/%s/beneficiaire/%s/reaffectation/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
methods=['get', 'post'],
|
2020-11-30 20:40:00 +01:00
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'affectation/(?P<affectation_id>[0-9]{1,10})/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/affectation/{affectation_id}/',
|
2021-03-11 23:00:51 +01:00
|
|
|
description_get=_('Get beneficiary affectation details'),
|
|
|
|
description_post=_('Update beneficiary affectation details'),
|
2020-11-30 20:40:00 +01:00
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
'affectation_id': {
|
|
|
|
'description': _('Help fund numeric identifier'),
|
|
|
|
'example_value': '7',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=14,
|
2021-03-11 23:00:51 +01:00
|
|
|
post={
|
|
|
|
'request_body': {
|
|
|
|
'schema': {
|
|
|
|
'application/json': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'rendezvous': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date_prise': DATE_SCHEMA,
|
|
|
|
'relance': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
'motif': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'date_reelle': DATE_SCHEMA,
|
|
|
|
'resultat': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'commentaire_ref': {'type': 'string'},
|
|
|
|
},
|
2021-03-30 15:55:23 +02:00
|
|
|
'unflatten': True,
|
2021-03-11 23:00:51 +01:00
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
2020-11-30 20:40:00 +01:00
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'id': {'type': 'integer'},
|
|
|
|
'dispositif': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
'referent': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'nom': {'type': 'string'},
|
|
|
|
'prenom': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'code_pi': {'type': 'string'},
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'origine': {'type': 'string'},
|
|
|
|
'erreur': OUI_NON_ENUM,
|
|
|
|
'date_deb': DATE_SCHEMA,
|
|
|
|
'origin': {'type': 'string'},
|
|
|
|
'prescripteur': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'type': {'type': 'string'},
|
|
|
|
'dispositif': {'type': 'string'},
|
|
|
|
'plateforme': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
2021-03-11 23:00:51 +01:00
|
|
|
'rendezvous': {
|
2020-11-30 20:40:00 +01:00
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date_prise': DATE_SCHEMA,
|
|
|
|
'relance': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
'motif': {'type': 'string'},
|
|
|
|
'lib_motif': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'date_reelle': DATE_SCHEMA,
|
|
|
|
'resultat': {'type': 'string'},
|
|
|
|
'lib_resultat': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'fin': {
|
|
|
|
'type': 'object',
|
|
|
|
'properties': {
|
|
|
|
'date': DATE_SCHEMA,
|
|
|
|
'motif': {'type': 'string'},
|
|
|
|
'lib_motif': {'type': 'string'},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'commentaire_ref': {'type': 'string'},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_affectation_detail(
|
2021-03-11 23:00:51 +01:00
|
|
|
self, request, platform_id, beneficiary_id, affectation_id, email, post_data=None, ip=None
|
2020-11-30 20:40:00 +01:00
|
|
|
):
|
2021-03-11 23:00:51 +01:00
|
|
|
if request.method == 'POST':
|
|
|
|
return self.put(
|
|
|
|
'platform/%s/beneficiaire/%s/affectation/%s/' % (platform_id, beneficiary_id, affectation_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
json=post_data,
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/affectation/%s/' % (platform_id, beneficiary_id, affectation_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
platform_beneficiaire_affectation_detail.endpoint_info.methods.insert(0, 'get')
|
2020-11-30 20:40:00 +01:00
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/' r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/' r'convo/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/convo/',
|
|
|
|
description=_('Get beneficiary convocations'),
|
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=15,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"convos_par_motif": {
|
|
|
|
"type": "array",
|
|
|
|
"items": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"nombre": {"type": "integer"},
|
|
|
|
"motif": {"type": "string"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"derniere_consequence": {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"date": DATE_SCHEMA,
|
|
|
|
"consequence": {"type": "string"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_convo(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/convo/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|
|
|
|
|
|
|
|
@endpoint(
|
|
|
|
name='platform',
|
|
|
|
pattern=r'^(?P<platform_id>[0-9]{1,10})/'
|
|
|
|
r'beneficiaire/(?P<beneficiary_id>[0-9]{1,10})/'
|
|
|
|
r'emploi/$',
|
|
|
|
example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/emploi/',
|
2020-12-01 12:10:27 +01:00
|
|
|
description=_('Get beneficiary employments'),
|
2020-11-30 20:40:00 +01:00
|
|
|
perm='can_access',
|
|
|
|
parameters=parameters(
|
|
|
|
{
|
|
|
|
'platform_id': {
|
|
|
|
'description': _('Platform numeric identifier'),
|
|
|
|
'example_value': '11',
|
|
|
|
},
|
|
|
|
'beneficiary_id': {
|
|
|
|
'description': _('Beneficiary numeric identifier'),
|
|
|
|
'example_value': '12',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
display_category=_('Platform'),
|
|
|
|
display_order=16,
|
|
|
|
json_schema_response=response_schema(
|
|
|
|
{
|
|
|
|
'type': 'array',
|
|
|
|
'items': {
|
|
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
|
|
"id": {"type": "string"},
|
|
|
|
"code_axe": {"type": "string"},
|
|
|
|
"lib_axe": {"type": "string"},
|
|
|
|
"code_rome": {"type": "string"},
|
|
|
|
"lib_rome": {"type": "string"},
|
|
|
|
"code_categorie": {"type": "string"},
|
|
|
|
"lib_categorie": {"type": "string"},
|
|
|
|
"lib_secteur": {"type": "string"},
|
|
|
|
"lib_niveau": {"type": "string"},
|
|
|
|
"lib_modalite": {"type": "string"},
|
|
|
|
"date_inscription": DATE_SCHEMA,
|
|
|
|
"date_sortie": DATE_SCHEMA,
|
|
|
|
"motif_sortie": {"type": "string"},
|
|
|
|
"date_dernier_ent": DATE_SCHEMA,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def platform_beneficiaire_emploi(self, request, platform_id, beneficiary_id, email, ip=None):
|
|
|
|
return self.get(
|
|
|
|
'platform/%s/beneficiaire/%s/emploi/' % (platform_id, beneficiary_id),
|
|
|
|
email=email,
|
|
|
|
ip=ip,
|
|
|
|
)
|