remplacement des clés variables par deux uniques dans le ws séparation
La liste des identifiants des enfants est à fournir soit dans une clé adresse_principale_1 ou adresse_principale_2.
This commit is contained in:
parent
00b84b15cf
commit
3e4d543205
|
@ -328,7 +328,7 @@ def test_create_individu(app, rsu_schema):
|
|||
assert data['enfants'][0]['id'] == enfant_id
|
||||
|
||||
response = app.post_json(separation_url, params={
|
||||
'enfant_%s' % enfant_id: 1,
|
||||
'adresse_principale_1': [enfant_id],
|
||||
})
|
||||
|
||||
assert Entity.objects.count() == 6
|
||||
|
|
|
@ -713,7 +713,7 @@ class SeparationView(APIView):
|
|||
'data': {
|
||||
'union': individu_to_response(conjoint),
|
||||
'union_statut': conjoint_rel.content['statut'],
|
||||
'enfants': [individu_to_response(enfant) for enfant in
|
||||
'enfants': [individu_to_response(enfant, add_text=True) for enfant in
|
||||
self.enfants_communs(individu, conjoint)],
|
||||
},
|
||||
})
|
||||
|
@ -759,18 +759,29 @@ class SeparationView(APIView):
|
|||
.update(right=adresse_2))
|
||||
assert c == 1
|
||||
|
||||
habite_schema = RelationSchema.objects.get(slug='habite')
|
||||
errors = {}
|
||||
enfant_ids = [enfant.id for enfant in enfants_communs]
|
||||
adresse_principale_1 = request.data.get('adresse_principale_1', [])
|
||||
adresse_principale_2 = request.data.get('adresse_principale_2', [])
|
||||
if not isinstance(adresse_principale_1, list):
|
||||
errors.setdefault('adresse_principale_1', []).append('is not a list of identifiers')
|
||||
if not isinstance(adresse_principale_2, list):
|
||||
errors.setdefault('adresse_principale_2', []).append('is not a list of identifiers')
|
||||
|
||||
errors = []
|
||||
keys = ['enfant_%s' % enfant.id for enfant in enfants_communs]
|
||||
for key in request.data:
|
||||
if key not in keys:
|
||||
errors[key] = ['clé inconnue']
|
||||
for key in adresse_principale_1:
|
||||
if key not in enfant_ids:
|
||||
errors.setdefault('adresse_principale_1', []).append(
|
||||
'l\'enfant %s n\'est pas commun' % key)
|
||||
|
||||
for key in adresse_principale_2:
|
||||
if key not in enfant_ids:
|
||||
errors.setdefault('adresse_principale_2', []).append(
|
||||
'l\'enfant %s n\'est pas commun' % key)
|
||||
|
||||
if set(adresse_principale_1) & set(adresse_principale_2):
|
||||
errors.setdefault('__all__', []).append('un enfant ne peut pas avoir deux adresses '
|
||||
'principales')
|
||||
|
||||
for enfant in enfants_communs:
|
||||
principale = request.data.get('enfant_%s' % enfant.id)
|
||||
if principale not in [1, 2]:
|
||||
errors['enfant_%s' % enfant.id] = ['valeur invalide']
|
||||
if errors:
|
||||
return Response({
|
||||
'err': 1,
|
||||
|
@ -784,6 +795,7 @@ class SeparationView(APIView):
|
|||
assert c == 1
|
||||
|
||||
# crée la nouvelle relation 'habite' et pose le flag principale si demandé
|
||||
habite_schema = RelationSchema.objects.get(slug='habite')
|
||||
for enfant in enfants_communs:
|
||||
rel_adresse_1 = Relation.objects.get(left=enfant, right=adresse_1)
|
||||
|
||||
|
@ -794,11 +806,10 @@ class SeparationView(APIView):
|
|||
'principale': False,
|
||||
})
|
||||
|
||||
principale = request.data.get('enfant_%s' % enfant.id)
|
||||
if principale == 1:
|
||||
if enfant.id in adresse_principale_1:
|
||||
rel_adresse_1.content['principale'] = True
|
||||
rel_adresse_1.save()
|
||||
elif principale == 2:
|
||||
elif enfant.id in adresse_principale_2:
|
||||
rel_adresse_2.content['principale'] = True
|
||||
rel_adresse_2.save()
|
||||
|
||||
|
|
Loading…
Reference in New Issue