164 lines
5.4 KiB
Python
164 lines
5.4 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']:
|
|
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', 'clae_cantine_next']:
|
|
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')
|