From 9e5e1eb1aa8de2ea97e50dedeaab0a6963b1ce4e Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 19 Jan 2016 09:16:20 +0100 Subject: [PATCH] Improving membership serialization --- taiga/projects/api.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index f48b3835..cede5ec9 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -488,19 +488,24 @@ class MembershipViewSet(ModelCrudViewSet): filter_fields = ("project", "role") 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) - if project_id is None: - # Creation - if self.request.method == 'POST': - return self.admin_serializer_class + if self.action == "list" and project_id is not None: + project = get_object_or_404(models.Project, pk=project_id) + use_admin_serializer = permissions_service.is_project_owner(self.request.user, project) - return self.serializer_class - - project = get_object_or_404(models.Project, pk=project_id) - if permissions_service.is_project_owner(self.request.user, project): + if use_admin_serializer: return self.admin_serializer_class - return self.serializer_class + else: + return self.serializer_class @list_route(methods=["POST"]) def bulk_create(self, request, **kwargs):