ajout ws déclaration de décés
This commit is contained in:
parent
e18ac08c0d
commit
7dc724da28
|
@ -353,3 +353,39 @@ def test_create_individu(app, rsu_schema):
|
|||
right__right_relations__left=second_id).count() == 0
|
||||
assert Relation.objects.filter(schema__slug='responsabilite-legale').count() == 3
|
||||
assert Relation.objects.filter(schema__slug='union').count() == 0
|
||||
|
||||
deces_url = reverse('rsu-api-declaration-de-deces',
|
||||
kwargs={
|
||||
'identifier': second_id,
|
||||
})
|
||||
|
||||
response = app.post_json(deces_url, params={
|
||||
'date_de_deces': datetime.date.today().isoformat(),
|
||||
})
|
||||
|
||||
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
|
||||
# le deuxième enfant n'a plus de logement
|
||||
assert Relation.objects.filter(
|
||||
left=enfant_id_2, schema__slug='habite').count() == 0
|
||||
# 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
|
||||
# le deuxième adulte et le premier enfant ne partagent plus de logement
|
||||
assert Relation.objects.filter(
|
||||
left=second_id, right__right_relations__left=enfant_id).count() == 0
|
||||
# le deuxième adulte a un logment
|
||||
assert Relation.objects.filter(
|
||||
left=second_id, schema__slug='habite').count() == 1
|
||||
# le premier et le deuxième adulte ne partagent plus de logement
|
||||
assert Relation.objects.filter(
|
||||
left=first_id,
|
||||
right__right_relations__schema__slug='habite',
|
||||
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
|
||||
|
|
|
@ -814,3 +814,61 @@ class SeparationView(APIView):
|
|||
})
|
||||
|
||||
separation = SeparationView.as_view()
|
||||
|
||||
|
||||
class DeclarationDeDecesSerializer(serializers.Serializer):
|
||||
date_de_deces = serializers.DateField()
|
||||
|
||||
|
||||
class DeclarationDeDecesView(APIView):
|
||||
def post(self, request, identifier, 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)
|
||||
|
||||
if individu.content.get('date_de_deces'):
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'__all__': ['individu déjà décédé'],
|
||||
}
|
||||
})
|
||||
|
||||
serializer = DeclarationDeDecesSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': serializer.errors,
|
||||
}, status=400)
|
||||
|
||||
# on stocke la date du décés
|
||||
individu.content['date_de_deces'] = serializer.validated_data['date_de_deces'].isoformat()
|
||||
individu.save()
|
||||
|
||||
# on supprime les relations
|
||||
Relation.objects.filter(schema__slug='responsabilite-legale', left=individu).delete()
|
||||
Relation.objects.filter(schema__slug='union', left=individu).delete()
|
||||
Relation.objects.filter(schema__slug='union', right=individu).delete()
|
||||
|
||||
# si l'adresse est partagée avec un autre adulte on l'individualise
|
||||
adresse = utils.adresse(individu)
|
||||
if adresse.right_relations.filter(left__content__statut_legal='majeur').count() > 1:
|
||||
new_adresse = copy.copy(adresse)
|
||||
new_adresse.id = None
|
||||
new_adresse.save()
|
||||
assert new_adresse.id and new_adresse.id != adresse.id
|
||||
c = Relation.objects.filter(schema__slug='habite', left=individu,
|
||||
right=adresse).update(right=new_adresse)
|
||||
assert c == 1
|
||||
# si l'adresse n'est partagée qu'avec des enfants, on les débranche
|
||||
else:
|
||||
Relation.objects.filter(
|
||||
schema__slug='habite', right=adresse).exclude(
|
||||
left=individu).delete()
|
||||
return Response({
|
||||
'err': 0,
|
||||
})
|
||||
|
||||
declaration_de_deces = DeclarationDeDecesView.as_view()
|
||||
|
|
|
@ -20,6 +20,8 @@ urlpatterns = [
|
|||
name='rsu-api-changement-de-situation-maritale'),
|
||||
url(r'^individu/(?P<identifier>\d+)/separation/$',
|
||||
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/$', 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