More robust membership bulk validation
parent
71203cb7db
commit
f27cac8c2a
|
@ -20,6 +20,7 @@ from django.db.models import Q, signals
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.db import transaction as tx
|
from django.db import transaction as tx
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
|
@ -218,9 +219,13 @@ class MembershipViewSet(ModelCrudViewSet):
|
||||||
data = serializer.data
|
data = serializer.data
|
||||||
project = models.Project.objects.get(id=data["project_id"])
|
project = models.Project.objects.get(id=data["project_id"])
|
||||||
self.check_permissions(request, 'bulk_create', project)
|
self.check_permissions(request, 'bulk_create', project)
|
||||||
|
try:
|
||||||
members = services.create_members_in_bulk(
|
members = services.create_members_in_bulk(
|
||||||
data["bulk_memberships"], project=project, callback=self.post_save,
|
data["bulk_memberships"], project=project, callback=self.post_save,
|
||||||
precall=self.pre_save)
|
precall=self.pre_save)
|
||||||
|
except ValidationError as err:
|
||||||
|
return Response(err.message_dict, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
members_serialized = self.serializer_class(members, many=True)
|
members_serialized = self.serializer_class(members, many=True)
|
||||||
|
|
||||||
return response.Ok(data=members_serialized.data)
|
return response.Ok(data=members_serialized.data)
|
||||||
|
|
Loading…
Reference in New Issue