rsa13: add beneficiaire/sorti/csv endpoint (#67210)
This commit is contained in:
parent
7a04d9253f
commit
10103f9d45
|
@ -1936,3 +1936,84 @@ class RSA13Resource(BaseResource, HTTPResource):
|
|||
for row in content.get('data') or []:
|
||||
writer.writerow(str(row.get(name) or '') for name in names)
|
||||
return response
|
||||
|
||||
BENEFICIAIRE_SORTI_CSV_COLUMN = [
|
||||
"NUM_CAF",
|
||||
"CODE_PER",
|
||||
"NOM_PER",
|
||||
"PRENOM_PER",
|
||||
"DTNAI_PER",
|
||||
"CP_PER",
|
||||
"COMMUNE_PER",
|
||||
"ACTIF_PER",
|
||||
"CODE_PI",
|
||||
"LIB_CODE_PI",
|
||||
"TOPPERSDRODEVORSA",
|
||||
"LIB_ETATDOSRSA",
|
||||
"LIB_MOTIF_ETATDOSRSA",
|
||||
"PLT_DT_DEB_AFF",
|
||||
"PLT_DT_FIN_AFF",
|
||||
"PLT_MOTIF_FIN_ACC",
|
||||
"PLT_COMMENTAIRE_REF",
|
||||
"PLT_NUM_CI",
|
||||
"PLT_PLATEFORME_CI",
|
||||
"PLT_OPERATEUR_CI",
|
||||
"PLT_REFERENT_CI",
|
||||
"PLT_DECISION_CI",
|
||||
"PLT_DUREE_CI",
|
||||
"PLT_DATE_DEB_CI",
|
||||
"PLT_DATE_FIN_CI",
|
||||
"NOUVEAU_DT_DEB_AFF",
|
||||
"NOUVEAU_AFF",
|
||||
"NOUVEAU_COMMENTAIRE_PI",
|
||||
"NOUVEAU_NUM_CI",
|
||||
"NOUVEAU_PLATEFORME_CI",
|
||||
"NOUVEAU_OPERATEUR_CI",
|
||||
"NOUVEAU_REFERENT_CI",
|
||||
"NOUVEAU_DECISION_CI",
|
||||
"NOUVEAU_DUREE_CI",
|
||||
"NOUVEAU_DATE_DEB_CI",
|
||||
"NOUVEAU_DATE_FIN_CI",
|
||||
]
|
||||
|
||||
@endpoint(
|
||||
name='platform',
|
||||
pattern=r'^(?P<platform_id>[0-9]{1,10})/beneficiaire/sorti/csv/$',
|
||||
example_pattern='{platform_id}/facturation/csv/',
|
||||
description_get=_('Get platform beneficiaries removed in the last 90 days'),
|
||||
perm='can_access',
|
||||
parameters=parameters(
|
||||
{
|
||||
'platform_id': {
|
||||
'description': _('Platform numeric identifier'),
|
||||
'example_value': '11',
|
||||
},
|
||||
}
|
||||
),
|
||||
display_category=_('Platform'),
|
||||
display_order=4.9,
|
||||
)
|
||||
def platform_beneficiaire_sorti_csv(
|
||||
self,
|
||||
request,
|
||||
platform_id,
|
||||
email,
|
||||
ip=None,
|
||||
):
|
||||
url = 'platform/%s/beneficiaire/sorti/csv' % platform_id
|
||||
content = self.get(url, email=email, ip=ip)
|
||||
response = HttpResponse(content_type='text/csv')
|
||||
date = now().strftime('%Y-%m-%d_%H:%M')
|
||||
response['Content-Disposition'] = f'attachment; filename="beneficiaire-sorti-{date}.csv"'
|
||||
# write Unicode BOM
|
||||
response.write(b'\xef\xbb\xbf')
|
||||
csv_columns = getattr(
|
||||
settings, 'RSA13_BENEFICIAIRE_SORTI_CSV_COLUMNS', self.BENEFICIAIRE_SORTI_CSV_COLUMN
|
||||
)
|
||||
names = [col if isinstance(col, str) else col[0] for col in csv_columns]
|
||||
titles = [col if isinstance(col, str) else col[1] for col in csv_columns]
|
||||
writer = csv.writer(response, delimiter=';')
|
||||
writer.writerow(titles)
|
||||
for row in content.get('data') or []:
|
||||
writer.writerow(str(row.get(name) or '') for name in names)
|
||||
return response
|
||||
|
|
|
@ -1020,3 +1020,220 @@ def test_platform_facturation_csv(app, rsa13, url, settings):
|
|||
'APDL MARTIGUES',
|
||||
],
|
||||
]
|
||||
|
||||
|
||||
@mock_response(
|
||||
[
|
||||
'/api/platform/11/beneficiaire/sorti/csv',
|
||||
{
|
||||
"err": 0,
|
||||
"data": [
|
||||
{
|
||||
"NUM_CAF": "372927",
|
||||
"CODE_PER": 415443,
|
||||
"NOM_PER": "DCFFEBABBDDCDEC",
|
||||
"PRENOM_PER": "CBDACDCFEBBAA",
|
||||
"DTNAI_PER": "1972-01-01",
|
||||
"CP_PER": "13004",
|
||||
"COMMUNE_PER": "MARSEILLE",
|
||||
"ACTIF_PER": "Oui",
|
||||
"CODE_PI": 53,
|
||||
"LIB_CODE_PI": "Pôle d'insertion Marseille III",
|
||||
"TOPPERSDRODEVORSA": "N",
|
||||
"LIB_ETATDOSRSA": "Droit clos",
|
||||
"LIB_MOTIF_ETATDOSRSA": "Clôture suite à échéance (4 mois sans droits)",
|
||||
"PLT_DT_DEB_AFF": "2021-10-05",
|
||||
"PLT_DT_FIN_AFF": "2022-06-13",
|
||||
"PLT_MOTIF_FIN_ACC": None,
|
||||
"PLT_COMMENTAIRE_REF": (
|
||||
'29/11/2021 Mme présente au RDV, mais pas de CER car plus '
|
||||
'de RSA. Titulaire d\'une pension d\'invalidité elle a un complément d\'ASI.\nE.CASTORI'
|
||||
),
|
||||
"PLT_NUM_CI": None,
|
||||
"PLT_PLATEFORME_CI": None,
|
||||
"PLT_OPERATEUR_CI": None,
|
||||
"PLT_REFERENT_CI": " ",
|
||||
"PLT_DECISION_CI": None,
|
||||
"PLT_DUREE_CI": None,
|
||||
"PLT_DATE_DEB_CI": None,
|
||||
"PLT_DATE_FIN_CI": None,
|
||||
"NOUVEAU_DT_DEB_AFF": "2022-06-13",
|
||||
"NOUVEAU_AFF": "SORTIE",
|
||||
"NOUVEAU_COMMENTAIRE_PI": None,
|
||||
"NOUVEAU_NUM_CI": None,
|
||||
"NOUVEAU_PLATEFORME_CI": None,
|
||||
"NOUVEAU_OPERATEUR_CI": None,
|
||||
"NOUVEAU_REFERENT_CI": None,
|
||||
"NOUVEAU_DECISION_CI": None,
|
||||
"NOUVEAU_DUREE_CI": None,
|
||||
"NOUVEAU_DATE_DEB_CI": None,
|
||||
"NOUVEAU_DATE_FIN_CI": None,
|
||||
},
|
||||
{
|
||||
"NUM_CAF": "1677380",
|
||||
"CODE_PER": 816754,
|
||||
"NOM_PER": "EBBCAAFBDCCF",
|
||||
"PRENOM_PER": "CCCADFBCBCEBCDCEBC",
|
||||
"DTNAI_PER": "1956-01-01",
|
||||
"CP_PER": "13012",
|
||||
"COMMUNE_PER": "MARSEILLE 12",
|
||||
"ACTIF_PER": "Oui",
|
||||
"CODE_PI": 53,
|
||||
"LIB_CODE_PI": "Pôle d'insertion Marseille III",
|
||||
"TOPPERSDRODEVORSA": "N",
|
||||
"LIB_ETATDOSRSA": "Droit clos",
|
||||
"LIB_MOTIF_ETATDOSRSA": "Clôture suite à échéance (4 mois sans droits)",
|
||||
"PLT_DT_DEB_AFF": "2021-10-15",
|
||||
"PLT_DT_FIN_AFF": "2022-06-13",
|
||||
"PLT_MOTIF_FIN_ACC": None,
|
||||
"PLT_COMMENTAIRE_REF": None,
|
||||
"PLT_NUM_CI": None,
|
||||
"PLT_PLATEFORME_CI": None,
|
||||
"PLT_OPERATEUR_CI": None,
|
||||
"PLT_REFERENT_CI": " ",
|
||||
"PLT_DECISION_CI": None,
|
||||
"PLT_DUREE_CI": None,
|
||||
"PLT_DATE_DEB_CI": None,
|
||||
"PLT_DATE_FIN_CI": None,
|
||||
"NOUVEAU_DT_DEB_AFF": "2022-06-13",
|
||||
"NOUVEAU_AFF": "SORTIE",
|
||||
"NOUVEAU_COMMENTAIRE_PI": None,
|
||||
"NOUVEAU_NUM_CI": "16",
|
||||
"NOUVEAU_PLATEFORME_CI": "CCO CANTINI",
|
||||
"NOUVEAU_OPERATEUR_CI": "CCO",
|
||||
"NOUVEAU_REFERENT_CI": "O BOBEUF",
|
||||
"NOUVEAU_DECISION_CI": "Validé",
|
||||
"NOUVEAU_DUREE_CI": "4",
|
||||
"NOUVEAU_DATE_DEB_CI": "2021-10-18",
|
||||
"NOUVEAU_DATE_FIN_CI": "2022-02-18",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
)
|
||||
def test_platform_beneficiaire_sorti_csv(app, rsa13, url, settings):
|
||||
response = app.get(url + 'platform/11/beneficiaire/sorti/csv/')
|
||||
stream = io.StringIO(response.content.decode('utf-8-sig'))
|
||||
assert list(csv.reader(stream, delimiter=';')) == [
|
||||
[
|
||||
'NUM_CAF',
|
||||
'CODE_PER',
|
||||
'NOM_PER',
|
||||
'PRENOM_PER',
|
||||
'DTNAI_PER',
|
||||
'CP_PER',
|
||||
'COMMUNE_PER',
|
||||
'ACTIF_PER',
|
||||
'CODE_PI',
|
||||
'LIB_CODE_PI',
|
||||
'TOPPERSDRODEVORSA',
|
||||
'LIB_ETATDOSRSA',
|
||||
'LIB_MOTIF_ETATDOSRSA',
|
||||
'PLT_DT_DEB_AFF',
|
||||
'PLT_DT_FIN_AFF',
|
||||
'PLT_MOTIF_FIN_ACC',
|
||||
'PLT_COMMENTAIRE_REF',
|
||||
'PLT_NUM_CI',
|
||||
'PLT_PLATEFORME_CI',
|
||||
'PLT_OPERATEUR_CI',
|
||||
'PLT_REFERENT_CI',
|
||||
'PLT_DECISION_CI',
|
||||
'PLT_DUREE_CI',
|
||||
'PLT_DATE_DEB_CI',
|
||||
'PLT_DATE_FIN_CI',
|
||||
'NOUVEAU_DT_DEB_AFF',
|
||||
'NOUVEAU_AFF',
|
||||
'NOUVEAU_COMMENTAIRE_PI',
|
||||
'NOUVEAU_NUM_CI',
|
||||
'NOUVEAU_PLATEFORME_CI',
|
||||
'NOUVEAU_OPERATEUR_CI',
|
||||
'NOUVEAU_REFERENT_CI',
|
||||
'NOUVEAU_DECISION_CI',
|
||||
'NOUVEAU_DUREE_CI',
|
||||
'NOUVEAU_DATE_DEB_CI',
|
||||
'NOUVEAU_DATE_FIN_CI',
|
||||
],
|
||||
[
|
||||
'372927',
|
||||
'415443',
|
||||
'DCFFEBABBDDCDEC',
|
||||
'CBDACDCFEBBAA',
|
||||
'1972-01-01',
|
||||
'13004',
|
||||
'MARSEILLE',
|
||||
'Oui',
|
||||
'53',
|
||||
"Pôle d'insertion Marseille III",
|
||||
'N',
|
||||
'Droit clos',
|
||||
'Clôture suite à échéance (4 mois sans droits)',
|
||||
'2021-10-05',
|
||||
'2022-06-13',
|
||||
'',
|
||||
'29/11/2021 Mme présente au RDV, mais pas de CER car plus de RSA. Titulaire '
|
||||
"d'une pension d'invalidité elle a un complément d'ASI.\n"
|
||||
'E.CASTORI',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
' ',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'2022-06-13',
|
||||
'SORTIE',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
],
|
||||
[
|
||||
'1677380',
|
||||
'816754',
|
||||
'EBBCAAFBDCCF',
|
||||
'CCCADFBCBCEBCDCEBC',
|
||||
'1956-01-01',
|
||||
'13012',
|
||||
'MARSEILLE 12',
|
||||
'Oui',
|
||||
'53',
|
||||
"Pôle d'insertion Marseille III",
|
||||
'N',
|
||||
'Droit clos',
|
||||
'Clôture suite à échéance (4 mois sans droits)',
|
||||
'2021-10-15',
|
||||
'2022-06-13',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
' ',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'2022-06-13',
|
||||
'SORTIE',
|
||||
'',
|
||||
'16',
|
||||
'CCO CANTINI',
|
||||
'CCO',
|
||||
'O BOBEUF',
|
||||
'Validé',
|
||||
'4',
|
||||
'2021-10-18',
|
||||
'2022-02-18',
|
||||
],
|
||||
]
|
||||
|
||||
settings.RSA13_BENEFICIAIRE_SORTI_CSV_COLUMNS = ['NUM_CAF']
|
||||
response = app.get(url + 'platform/11/beneficiaire/sorti/csv/')
|
||||
stream = io.StringIO(response.content.decode('utf-8-sig'))
|
||||
assert list(csv.reader(stream, delimiter=';')) == [['NUM_CAF'], ['372927'], ['1677380']]
|
||||
|
|
Loading…
Reference in New Issue