nanterre: ne pas bloquer la création d'un non-parent quand il y a déjà 2 parents (fixes #15780)
This commit is contained in:
parent
2d52c993b4
commit
4f0198c31f
|
@ -159,6 +159,37 @@ def test_create_individu(app, rsu_schema):
|
|||
assert Relation.objects.filter(schema__slug='habite').count() == 2
|
||||
second_id = response.json['data']['id']
|
||||
|
||||
# création d'un troisième adulte
|
||||
response = app.post_json(create_url, params={
|
||||
'prenoms': 'John',
|
||||
'nom_de_naissance': 'Doe',
|
||||
'nom_d_usage': '',
|
||||
'date_de_naissance': '1981-05-05',
|
||||
'genre': 'homme',
|
||||
'email': 'john.doe@gmail.com',
|
||||
'telephones': [
|
||||
],
|
||||
'adresse': {
|
||||
'at': '',
|
||||
'streetnumber': '12',
|
||||
'streetnumberext': '',
|
||||
'streetname': 'RUE DU PAPE',
|
||||
'ext1': '',
|
||||
'ext2': '',
|
||||
'streetmatriculation': '00055',
|
||||
'zipcode': '92000',
|
||||
'inseecode': '92000',
|
||||
'city': 'NANTERRE',
|
||||
'country': 'FRANCE',
|
||||
}
|
||||
})
|
||||
assert Entity.objects.count() == 6
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 3
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 3
|
||||
assert Relation.objects.count() == 3
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 3
|
||||
third_id = response.json['data']['id']
|
||||
|
||||
# rattachement du premier enfant au premier adulte
|
||||
enfant_url = reverse('rsu-api-declaration-responsabilite-legale',
|
||||
kwargs={'identifier': first_id})
|
||||
|
@ -233,13 +264,42 @@ def test_create_individu(app, rsu_schema):
|
|||
|
||||
enfant_id_2 = response.json['data']['id']
|
||||
|
||||
assert Entity.objects.count() == 6
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 4
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 2
|
||||
assert Relation.objects.count() == 8
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 5
|
||||
assert Entity.objects.count() == 8
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 5
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 3
|
||||
assert Relation.objects.count() == 9
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 6
|
||||
assert Relation.objects.filter(schema__slug='responsabilite-legale').count() == 3
|
||||
|
||||
# rattachement du premier enfant à un troisième responsable légal
|
||||
enfant_url = reverse('rsu-api-declaration-responsabilite-legale',
|
||||
kwargs={'identifier': third_id})
|
||||
|
||||
# comme parent cela doit échouer
|
||||
response = app.post_json(enfant_url, params={
|
||||
'statut': 'parent',
|
||||
'enfant_id': enfant_id,
|
||||
}, status=400)
|
||||
assert response.json['err'] == 1
|
||||
|
||||
# comme tiers de confiance cela marche
|
||||
response = app.post_json(enfant_url, params={
|
||||
'statut': 'tiers_de_confiance',
|
||||
'enfant_id': enfant_id,
|
||||
})
|
||||
assert response.json['err'] == 0
|
||||
assert 'id' in response.json['data']
|
||||
|
||||
# on détache l'efnant du tiers
|
||||
suppression_responsabilite_url = reverse(
|
||||
'rsu-api-suppression-lien-de-responsabilite',
|
||||
kwargs={
|
||||
'identifier': third_id,
|
||||
'identifier_enfant': enfant_id
|
||||
})
|
||||
response = app.post_json(suppression_responsabilite_url)
|
||||
assert response.json['err'] == 0
|
||||
|
||||
# déclaration d'union entre les deux adultes
|
||||
union_url = reverse('rsu-api-declaration-union')
|
||||
|
||||
|
@ -252,11 +312,11 @@ def test_create_individu(app, rsu_schema):
|
|||
|
||||
assert response.json['err'] == 0
|
||||
|
||||
assert Entity.objects.count() == 5
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 4
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 1
|
||||
assert Relation.objects.count() == 8
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 4
|
||||
assert Entity.objects.count() == 7
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 5
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 2
|
||||
assert Relation.objects.count() == 9
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 5
|
||||
assert Relation.objects.filter(schema__slug='responsabilite-legale').count() == 3
|
||||
assert Relation.objects.filter(schema__slug='union').count() == 1
|
||||
|
||||
|
@ -360,12 +420,12 @@ def test_create_individu(app, rsu_schema):
|
|||
'adresse_principale_1': [enfant_id],
|
||||
})
|
||||
|
||||
assert Entity.objects.count() == 6
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 4
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 2
|
||||
assert Relation.objects.count() == 8
|
||||
assert Entity.objects.count() == 8
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 5
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 3
|
||||
assert Relation.objects.count() == 9
|
||||
# tout le monde habite quelque part, un enfant a deux logements
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 5
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 6
|
||||
# le premier adulte et le premier enfant partagent un logement
|
||||
assert Relation.objects.filter(
|
||||
left=first_id, right__right_relations__left=enfant_id).count() == 1
|
||||
|
@ -394,10 +454,10 @@ def test_create_individu(app, rsu_schema):
|
|||
|
||||
assert response.json['err'] == 0
|
||||
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 4
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 2
|
||||
assert Entity.objects.count() == 6
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 3
|
||||
assert Entity.objects.filter(schema__slug='individu').count() == 5
|
||||
assert Entity.objects.filter(schema__slug='adresse').count() == 3
|
||||
assert Entity.objects.count() == 8
|
||||
assert Relation.objects.filter(schema__slug='habite').count() == 4
|
||||
# le deuxième enfant n'a plus de logement
|
||||
assert Relation.objects.filter(
|
||||
left=enfant_id_2, schema__slug='habite').count() == 0
|
||||
|
@ -417,4 +477,4 @@ def test_create_individu(app, rsu_schema):
|
|||
right__right_relations__left=second_id).count() == 0
|
||||
assert Relation.objects.filter(schema__slug='responsabilite-legale').count() == 1
|
||||
assert Relation.objects.filter(schema__slug='union').count() == 0
|
||||
assert Relation.objects.count() == 4
|
||||
assert Relation.objects.count() == 5
|
||||
|
|
|
@ -398,13 +398,16 @@ class DeclarationResponsabiliteLegale(APIView):
|
|||
'cles_de_federation': {},
|
||||
})
|
||||
# verify child has not already two parents
|
||||
if enfant.right_relations.filter(schema__slug=utils.RESPONSABILITE_LEGALE_REL).count() > 1:
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'enfant_id': ['this child has already two parents'],
|
||||
}
|
||||
}, status=400)
|
||||
if v['statut'] == 'parent':
|
||||
if enfant.right_relations.filter(
|
||||
content__statut='parent',
|
||||
schema__slug=utils.RESPONSABILITE_LEGALE_REL).count() > 1:
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'enfant_id': ['this child has already two parents'],
|
||||
}
|
||||
}, status=400)
|
||||
|
||||
# verify child is not already linked to this parent
|
||||
if enfant.right_relations.filter(schema__slug=utils.RESPONSABILITE_LEGALE_REL,
|
||||
|
@ -918,8 +921,6 @@ class SuppressionLienDeResponsabiliteView(APIView):
|
|||
}
|
||||
}, status=400)
|
||||
|
||||
assert c == 2, 'only two links should exist'
|
||||
|
||||
Relation.objects.filter(left=individu, right=enfant,
|
||||
schema__slug=utils.RESPONSABILITE_LEGALE_REL).delete()
|
||||
|
||||
|
|
Loading…
Reference in New Issue