206 lines
5.9 KiB
Python
206 lines
5.9 KiB
Python
import pprint
|
|
import requests
|
|
|
|
|
|
def test_link(conn, user):
|
|
print("Get update management dates")
|
|
url = conn + '/management_dates'
|
|
resp = requests.get(url)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
name_id = user['name_id']
|
|
url = conn + '/link?NameID=%s' % name_id
|
|
payload = {
|
|
'IDDUI': user['dui'],
|
|
'NOM': user['last_name'],
|
|
'PRENOM': user['first_name'],
|
|
'NAISSANCE': user['dob'],
|
|
}
|
|
print("Creating link with the following payload:")
|
|
pprint.pprint(payload)
|
|
resp = requests.post(url, json=payload)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
print("GET family info")
|
|
url = conn + '/family_info?NameID=%s' % name_id
|
|
resp = requests.get(url)
|
|
resp.raise_for_status()
|
|
data = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(data)
|
|
print('\n')
|
|
|
|
# take family info and transform them into updatable data
|
|
payload = data['data']
|
|
# complete required fields
|
|
payload['N0TELEDOSSIER'] = '42'
|
|
payload['DROITALIMAGE'] = 'NON'
|
|
payload['REVENUS']['CHOIXREVENU'] = ''
|
|
# remove non editable fields
|
|
for key in [
|
|
'SITUATIONFAMILIALE',
|
|
'SITUATIONFAMILIALE_label',
|
|
'NBENFANTACTIF',
|
|
'NBRLACTIF',
|
|
'IDDUI',
|
|
'CODEMISEAJOUR',
|
|
'management_dates',
|
|
'annee_reference',
|
|
'annee_reference_label',
|
|
'annee_reference_short',
|
|
]:
|
|
payload.pop(key)
|
|
for key in [
|
|
'IDPERSONNE',
|
|
'NOM',
|
|
'PRENOM',
|
|
'NOMJEUNEFILLE',
|
|
'DATENAISSANCE',
|
|
'CIVILITE',
|
|
'INDICATEURRL',
|
|
'CSP_label',
|
|
]:
|
|
if 'RL1' in payload:
|
|
payload['RL1'].pop(key)
|
|
if 'RL2' in payload:
|
|
payload['RL2'].pop(key)
|
|
for key in [
|
|
'MONTANTTOTAL',
|
|
'DATEVALIDITE',
|
|
'SFI',
|
|
'IREVENUS',
|
|
'RNF',
|
|
'NBENFANTSACHARGE',
|
|
'TYPEREGIME_label',
|
|
]:
|
|
payload['REVENUS'].pop(key, None)
|
|
for enfant in payload['ENFANT']:
|
|
for key in [
|
|
'id',
|
|
'text',
|
|
'NOM',
|
|
'DATENAISSANCE',
|
|
'SEXE',
|
|
'PRENOMPERE',
|
|
'PRENOMMERE',
|
|
'NOMPERE',
|
|
'NOMMERE',
|
|
'RATTACHEAUTREDUI',
|
|
'PRENOM',
|
|
'clae_cantine_current',
|
|
]:
|
|
enfant.pop(key)
|
|
enfant['AUTORISATIONURGENCEMEDICALE'] = 'OUI'
|
|
# manage contact fields
|
|
for contact in enfant.get('CONTACT', []):
|
|
contact.pop('id')
|
|
contact.pop('text')
|
|
contact.pop('LIENPARENTE_label')
|
|
if 'SANITAIRE' not in enfant:
|
|
continue
|
|
# manage handicap data (not the same schema)
|
|
handicap_fields = [
|
|
'AUTREDIFFICULTE',
|
|
'ECOLESPECIALISEE',
|
|
'INDICATEURAUXILIAIREVS',
|
|
'INDICATEURECOLE',
|
|
'INDICATEURHANDICAP',
|
|
'INDICATEURNOTIFMDPH',
|
|
]
|
|
enfant['SANITAIRE']['HANDICAP'] = {}
|
|
for key in handicap_fields:
|
|
enfant['SANITAIRE']['HANDICAP'][key] = enfant['SANITAIRE'].pop(key)
|
|
# manage allergie data (not the same schema)
|
|
if 'ALLERGIE' not in enfant['SANITAIRE']:
|
|
continue
|
|
new_allergie = {
|
|
'ASTHME': False,
|
|
'MEDICAMENTEUSES': False,
|
|
'ALIMENTAIRES': False,
|
|
'AUTRES': None,
|
|
}
|
|
for allergie in enfant['SANITAIRE']['ALLERGIE']:
|
|
if allergie['TYPE'] == 'AUTRES':
|
|
if allergie['ALLERGIQUE'] == 'OUI':
|
|
new_allergie['AUTRES'] = allergie['NOMALLERGIE']
|
|
continue
|
|
new_allergie[allergie['TYPE']] = allergie['ALLERGIQUE']
|
|
enfant['SANITAIRE']['ALLERGIE'] = new_allergie
|
|
# add partial update flags
|
|
flags = [
|
|
'maj:adresse',
|
|
'maj:rl1',
|
|
'maj:rl1_adresse_employeur',
|
|
'maj:rl2',
|
|
'maj:rl2_adresse_employeur',
|
|
'maj:revenus',
|
|
]
|
|
for i in range(0, 6):
|
|
flags += [
|
|
'maj:enfant_%s' % i,
|
|
'maj:enfant_%s_sanitaire' % i,
|
|
'maj:enfant_%s_sanitaire_medecin' % i,
|
|
'maj:enfant_%s_sanitaire_vaccin' % i,
|
|
'maj:enfant_%s_sanitaire_allergie' % i,
|
|
'maj:enfant_%s_sanitaire_handicap' % i,
|
|
'maj:enfant_%s_assurance' % i,
|
|
'maj:enfant_%s_contact' % i,
|
|
]
|
|
for key in flags:
|
|
payload[key] = True
|
|
|
|
print("Update family info with the following payload:")
|
|
pprint.pprint(payload)
|
|
url = conn + '/update_family_info?NameID=%s' % name_id
|
|
resp = requests.post(url, json=payload)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
print("GET children info")
|
|
url = conn + '/children_info?NameID=%s' % (name_id)
|
|
resp = requests.get(url)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
for child in data['data']['ENFANT']:
|
|
print("GET child info")
|
|
url = conn + '/child_info?NameID=%s&idpersonne=%s' % (name_id, child['IDPERSONNE'])
|
|
resp = requests.get(url)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
print("GET child contact info")
|
|
url = conn + '/child_contacts_info?NameID=%s&idpersonne=%s' % (name_id, child['IDPERSONNE'])
|
|
resp = requests.get(url)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|
|
|
|
print("Deleting link")
|
|
url = conn + '/unlink?NameID=%s' % name_id
|
|
resp = requests.post(url)
|
|
resp.raise_for_status()
|
|
res = resp.json()
|
|
assert res['err'] == 0
|
|
pprint.pprint(res)
|
|
print('\n')
|