Merge pull request #576 from taigaio/Improving-memberships-serialization

Improving membership serialization
remotes/origin/logger
David Barragán Merino 2016-01-22 09:56:38 +01:00
commit 54423c29c2
1 changed files with 14 additions and 9 deletions

View File

@ -488,18 +488,23 @@ 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
if self.request.method == 'POST':
return self.admin_serializer_class
return self.serializer_class
project = get_object_or_404(models.Project, pk=project_id) project = get_object_or_404(models.Project, pk=project_id)
if permissions_service.is_project_owner(self.request.user, project): use_admin_serializer = permissions_service.is_project_owner(self.request.user, project)
if use_admin_serializer:
return self.admin_serializer_class return self.admin_serializer_class
else:
return self.serializer_class return self.serializer_class
@list_route(methods=["POST"]) @list_route(methods=["POST"])