From 9908d4307a947c60aeaf4082c306403ed10c61f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Tue, 10 Mar 2015 13:22:30 +0100 Subject: [PATCH] Fix the show of csv exports uuid on project serialized data --- taiga/projects/api.py | 16 ++++++++++++++++ taiga/projects/serializers.py | 11 ++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 65e05959..417549fe 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -53,6 +53,7 @@ from .votes.utils import attach_votescount_to_queryset class ProjectViewSet(ModelCrudViewSet): serializer_class = serializers.ProjectDetailSerializer + admin_serializer_class = serializers.ProjectDetailAdminSerializer list_serializer_class = serializers.ProjectSerializer permission_classes = (permissions.ProjectPermission, ) filter_backends = (filters.CanViewProjectObjFilterBackend,) @@ -61,6 +62,21 @@ class ProjectViewSet(ModelCrudViewSet): qs = models.Project.objects.all() return attach_votescount_to_queryset(qs, as_field="stars_count") + def get_serializer_class(self): + if self.action == "list": + return self.list_serializer_class + + if self.action == "by_slug": + slug = self.request.QUERY_PARAMS.get("slug", None) + project = get_object_or_404(models.Project, slug=slug) + else: + project = self.get_object() + + if permissions_service.is_project_owner(self.request.user, project): + return self.admin_serializer_class + + return self.serializer_class + @list_route(methods=["GET"]) def by_slug(self, request): slug = request.QUERY_PARAMS.get("slug", None) diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index b0332be9..b8634380 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -269,7 +269,8 @@ class ProjectSerializer(ModelSerializer): class Meta: model = models.Project read_only_fields = ("created_date", "modified_date", "owner") - exclude = ("last_us_ref", "last_task_ref", "last_issue_ref") + exclude = ("last_us_ref", "last_task_ref", "last_issue_ref", + "issues_csv_uuid", "tasks_csv_uuid", "userstories_csv_uuid") def get_stars_number(self, obj): # The "stars_count" attribute is attached in the get_queryset of the viewset. @@ -301,6 +302,7 @@ class ProjectSerializer(ModelSerializer): raise serializers.ValidationError("Total milestones must be major or equal to zero") return attrs + class ProjectDetailSerializer(ProjectSerializer): roles = serializers.SerializerMethodField("get_roles") memberships = serializers.SerializerMethodField("get_memberships") @@ -331,6 +333,13 @@ class ProjectDetailSerializer(ProjectSerializer): return serializer.data +class ProjectDetailAdminSerializer(ProjectDetailSerializer): + class Meta: + model = models.Project + read_only_fields = ("created_date", "modified_date", "owner") + exclude = ("last_us_ref", "last_task_ref", "last_issue_ref") + + ###################################################### ## Starred ######################################################