Improving membership serialization

remotes/origin/logger
Alejandro Alonso 2016-01-19 09:16:20 +01:00 committed by David Barragán Merino
parent 50189afc38
commit 9e5e1eb1aa
1 changed files with 14 additions and 9 deletions

View File

@ -488,19 +488,24 @@ class MembershipViewSet(ModelCrudViewSet):
filter_fields = ("project", "role") filter_fields = ("project", "role")
def get_serializer_class(self): def get_serializer_class(self):
use_admin_serializer = False
if self.action == "create":
use_admin_serializer = True
if self.action == "retrieve":
use_admin_serializer = permissions_service.is_project_owner(self.request.user, self.object.project)
project_id = self.request.QUERY_PARAMS.get("project", None) project_id = self.request.QUERY_PARAMS.get("project", None)
if project_id is None: if self.action == "list" and project_id is not None:
# Creation project = get_object_or_404(models.Project, pk=project_id)
if self.request.method == 'POST': use_admin_serializer = permissions_service.is_project_owner(self.request.user, project)
return self.admin_serializer_class
return self.serializer_class if use_admin_serializer:
project = get_object_or_404(models.Project, pk=project_id)
if permissions_service.is_project_owner(self.request.user, project):
return self.admin_serializer_class return self.admin_serializer_class
return self.serializer_class else:
return self.serializer_class
@list_route(methods=["POST"]) @list_route(methods=["POST"])
def bulk_create(self, request, **kwargs): def bulk_create(self, request, **kwargs):