ajout ws changement de situation maritale
This commit is contained in:
parent
40807a8bd4
commit
39742418c9
|
@ -260,3 +260,22 @@ def test_create_individu(app, rsu_schema):
|
|||
|
||||
assert response.json['err'] == 1
|
||||
assert response.json['errors']['__all__'] == ['individu non mineur']
|
||||
|
||||
data = get_reseau(first_id)
|
||||
assert data['union']
|
||||
assert data['union_statut'] == 'mariage'
|
||||
|
||||
changement_de_situation_maritale_url = reverse('rsu-api-changement-de-situation-maritale',
|
||||
kwargs={
|
||||
'identifier': first_id
|
||||
})
|
||||
|
||||
response = app.post_json(changement_de_situation_maritale_url, params={
|
||||
'statut': 'pacs'
|
||||
})
|
||||
|
||||
assert response.json['err'] == 0
|
||||
|
||||
data = get_reseau(first_id)
|
||||
assert data['union']
|
||||
assert data['union_statut'] == 'pacs'
|
||||
|
|
|
@ -610,3 +610,51 @@ class DeclarationAdressePrincipaleView(APIView):
|
|||
})
|
||||
|
||||
declaration_adresse_principale = DeclarationAdressePrincipaleView.as_view()
|
||||
|
||||
|
||||
class ChangementDeSituationMaritaleSerializer(serializers.Serializer):
|
||||
statut = serializers.ChoiceField(
|
||||
choices=['pacs', 'mariage', 'unionlibre'])
|
||||
|
||||
|
||||
class ChangementDeSituationMaritaleView(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['statut_legal'] != 'majeur':
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'__all__': ['individu non majeur'],
|
||||
}
|
||||
})
|
||||
|
||||
conjoint, conjoint_rel = utils.conjoint(individu)
|
||||
if not conjoint:
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': {
|
||||
'__all__': ["cet individu n'a pas actuellement de relation maritale"],
|
||||
}
|
||||
})
|
||||
|
||||
serializer = ChangementDeSituationMaritaleSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response({
|
||||
'err': 1,
|
||||
'errors': serializer.errors,
|
||||
}, status=400)
|
||||
|
||||
if conjoint_rel.content['statut'] != serializer.validated_data['statut']:
|
||||
conjoint_rel.content['statut'] = serializer.validated_data['statut']
|
||||
conjoint_rel.save()
|
||||
|
||||
return Response({
|
||||
'err': 0
|
||||
})
|
||||
|
||||
changement_de_situation_maritale = ChangementDeSituationMaritaleView.as_view()
|
||||
|
|
|
@ -15,6 +15,9 @@ urlpatterns = [
|
|||
url(r'^individu/(?P<identifier>\d+)/declaration-adresse-principale/$',
|
||||
api_views.declaration_adresse_principale,
|
||||
name='rsu-api-declaration-adresse-principale'),
|
||||
url(r'^individu/(?P<identifier>\d+)/changement-de-situation-maritale/$',
|
||||
api_views.changement_de_situation_maritale,
|
||||
name='rsu-api-changement-de-situation-maritale'),
|
||||
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'),
|
||||
|
|
|
@ -56,6 +56,20 @@ def age_in_years(born, today=None):
|
|||
return age_in_years_and_months(born, today=today)[0]
|
||||
|
||||
|
||||
def conjoint(individu):
|
||||
for relation in individu.left_relations.all():
|
||||
if relation.schema.slug != 'union':
|
||||
continue
|
||||
return relation.right, relation
|
||||
|
||||
for relation in individu.right_relations.all():
|
||||
if relation.schema.slug != 'union':
|
||||
continue
|
||||
return relation.left, relation
|
||||
|
||||
return None, None
|
||||
|
||||
|
||||
def enfants(individu):
|
||||
for relation in individu.left_relations.all():
|
||||
if relation.schema.slug != 'responsabilite-legale':
|
||||
|
@ -309,23 +323,12 @@ class PersonSearch(object):
|
|||
|
||||
@classmethod
|
||||
def add_union(cls, individu):
|
||||
conjoint = None
|
||||
for relation in individu.left_relations.all():
|
||||
if relation.schema.slug != 'union':
|
||||
continue
|
||||
conjoint = relation.right
|
||||
break
|
||||
else:
|
||||
for relation in individu.right_relations.all():
|
||||
if relation.schema.slug != 'union':
|
||||
continue
|
||||
conjoint = relation.left
|
||||
break
|
||||
if conjoint:
|
||||
cls.add_age(conjoint)
|
||||
cls.add_federations(conjoint)
|
||||
individu.union = conjoint
|
||||
individu.union_statut = relation.content['statut']
|
||||
con, conjoint_rel = conjoint(individu)
|
||||
if con:
|
||||
cls.add_age(con)
|
||||
cls.add_federations(con)
|
||||
individu.union = con
|
||||
individu.union_statut = conjoint_rel.content['statut']
|
||||
|
||||
@classmethod
|
||||
def add_federations(cls, individu):
|
||||
|
|
Loading…
Reference in New Issue