More robust membership bulk validation

remotes/origin/enhancement/email-actions
Jesús Espino 2014-09-15 17:59:25 +02:00
parent 71203cb7db
commit f27cac8c2a
1 changed files with 8 additions and 3 deletions

View File

@ -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)
members = services.create_members_in_bulk( try:
data["bulk_memberships"], project=project, callback=self.post_save, members = services.create_members_in_bulk(
precall=self.pre_save) data["bulk_memberships"], project=project, callback=self.post_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)