nanterre: ajoute le ws suppression de lien de responsabilité
This commit is contained in:
parent
c07efd8465
commit
b28be23d6d
|
@ -186,7 +186,30 @@ def test_create_individu(app, rsu_schema):
|
|||
assert response.json['err'] == 0
|
||||
assert 'id' in response.json['data']
|
||||
|
||||
# détachement du premier enfant du premier adulte
|
||||
suppression_responsabilite_url = reverse(
|
||||
'rsu-api-suppression-lien-de-responsabilite',
|
||||
kwargs={
|
||||
'identifier': first_id,
|
||||
'identifier_enfant': enfant_id
|
||||
})
|
||||
response = app.post_json(suppression_responsabilite_url)
|
||||
assert response.json['err'] == 0
|
||||
|
||||
# ré-attachement du premier enfant au premier adulte
|
||||
enfant_url = reverse('rsu-api-declaration-responsabilite-legale',
|
||||
kwargs={'identifier': first_id})
|
||||
|
||||
response = app.post_json(enfant_url, params={
|
||||
'statut': 'parent',
|
||||
'enfant_id': enfant_id,
|
||||
})
|
||||
assert response.json['err'] == 0
|
||||
assert 'id' in response.json['data']
|
||||
|
||||
# rattachement d'un deuxième enfant au deuxième adulte
|
||||
enfant_url = reverse('rsu-api-declaration-responsabilite-legale',
|
||||
kwargs={'identifier': second_id})
|
||||
response = app.post_json(enfant_url, params={
|
||||
'statut': 'parent',
|
||||
'enfant': {
|
||||
|
|
|
@ -886,3 +886,59 @@ class DeclarationDeDecesView(APIView):
|
|||
})
|
||||
|
||||
declaration_de_deces = DeclarationDeDecesView.as_view()
|
||||
|
||||
|
||||
class SuppressionLienDeResponsabiliteView(APIView):
|
||||
def post(self, request, identifier, identifier_enfant, format=None):
|
||||
qs = Entity.objects.prefetch_related(
|
||||
'left_relations__schema', 'left_relations__right',
|
||||
'right_relations__schema', 'right_relations__left',
|
||||
)
|
||||
individu = get_object_or_404(qs, schema__slug='individu', id=identifier)
|
||||
|
||||
enfant = get_object_or_404(qs, schema__slug='individu', id=identifier_enfant)
|
||||
|
||||
c = Relation.objects.filter(left=individu, right=enfant,
|
||||
schema__slug='responsabilite-legale').count()
|
||||
if not c:
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'__all__': [u'cet adulte n\'a pas de responsabilité légale sur cet enfant'],
|
||||
}
|
||||
}, status=400)
|
||||
|
||||
c = Relation.objects.filter(
|
||||
right=enfant,
|
||||
schema__slug='responsabilite-legale').count()
|
||||
if c < 2:
|
||||
return Relation({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'__all__': [u'cet enfant n\'a qu\'un responsable légal'],
|
||||
}
|
||||
}, status=400)
|
||||
|
||||
assert c == 2, 'only two links should exist'
|
||||
|
||||
Relation.objects.filter(left=individu, right=enfant,
|
||||
schema__slug='responsabilite-legale').delete()
|
||||
|
||||
# suppression éventuelle de l'adresse commune entre l'enfant et l'adulte
|
||||
# si elle n'appartient pas aussi à un autre adulte ayant des responsabilités
|
||||
# légales sur le même enfant
|
||||
adresse = utils.adresse(individu)
|
||||
other_individu_ids = [rel.left_id for rel in
|
||||
Relation.objects.filter(left__content__statut_legal='majeur',
|
||||
right=adresse,
|
||||
schema__slug='habite')]
|
||||
if not Relation.objects.filter(left_id__in=other_individu_ids,
|
||||
right=enfant,
|
||||
schema__slug='responsabilite-legale').exists():
|
||||
Relation.objects.filter(left=enfant, right=adresse).delete()
|
||||
|
||||
return Response({
|
||||
'err': 0,
|
||||
})
|
||||
|
||||
suppression_lien_de_responsabilite = SuppressionLienDeResponsabiliteView.as_view()
|
||||
|
|
|
@ -23,6 +23,10 @@ urlpatterns = [
|
|||
api_views.separation, name='rsu-api-separation'),
|
||||
url(r'^individu/(?P<identifier>\d+)/declaration-de-deces/$',
|
||||
api_views.declaration_de_deces, name='rsu-api-declaration-de-deces'),
|
||||
url(r'^individu/(?P<identifier>\d+)/(?P<identifier_enfant>\d+)/'
|
||||
'suppression-lien-de-responsabilite/$',
|
||||
api_views.suppression_lien_de_responsabilite,
|
||||
name='rsu-api-suppression-lien-de-responsabilite'),
|
||||
url(r'^individu/$', api_views.create_individu, name='rsu-api-create-individu'),
|
||||
url(r'^declaration-union/$', api_views.declaration_union,
|
||||
name='rsu-api-declaration-union'),
|
||||
|
|
Loading…
Reference in New Issue