From 64b636678b90e1b61e9e4d364159c181ee6dc563 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 28 Jul 2015 13:46:13 +0200 Subject: [PATCH] Adding neighbors info only in GET requests to API --- taiga/projects/issues/api.py | 11 +++++++---- taiga/projects/tasks/api.py | 10 +++++++--- taiga/projects/userstories/api.py | 10 +++++++--- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index bb377e8d..7a1033b6 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -43,10 +43,7 @@ from . import serializers class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet): - serializer_class = serializers.IssueNeighborsSerializer - list_serializer_class = serializers.IssueSerializer permission_classes = (permissions.IssuePermission, ) - filter_backends = (filters.CanViewIssuesFilterBackend, filters.OwnersFilter, filters.AssignedToFilter, @@ -78,6 +75,12 @@ class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, "assigned_to", "subject") + def get_serializer_class(self, *args, **kwargs): + if self.action in ["retrieve", "by_ref"]: + return serializers.IssueNeighborsSerializer + + return serializers.IssueSerializer + def update(self, request, *args, **kwargs): self.object = self.get_object_or_none() project_id = request.DATA.get('project', None) @@ -225,7 +228,7 @@ class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, status=project.default_issue_status, severity=project.default_severity, priority=project.default_priority, type=project.default_issue_type, callback=self.post_save, precall=self.pre_save) - issues_serialized = self.serializer_class(issues, many=True) + issues_serialized = self.get_serializer_class()(issues, many=True) return response.Ok(data=issues_serialized.data) diff --git a/taiga/projects/tasks/api.py b/taiga/projects/tasks/api.py index 5d5581cd..7b6b90ac 100644 --- a/taiga/projects/tasks/api.py +++ b/taiga/projects/tasks/api.py @@ -37,13 +37,17 @@ from . import services class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet): model = models.Task - serializer_class = serializers.TaskNeighborsSerializer - list_serializer_class = serializers.TaskSerializer permission_classes = (permissions.TaskPermission,) filter_backends = (filters.CanViewTasksFilterBackend,) filter_fields = ["user_story", "milestone", "project", "assigned_to", "status__is_closed", "watchers"] + def get_serializer_class(self, *args, **kwargs): + if self.action in ["retrieve", "by_ref"]: + return serializers.TaskNeighborsSerializer + + return serializers.TaskSerializer + def update(self, request, *args, **kwargs): self.object = self.get_object_or_none() project_id = request.DATA.get('project', None) @@ -129,7 +133,7 @@ class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, data["bulk_tasks"], milestone_id=data["sprint_id"], user_story_id=data["us_id"], status_id=data.get("status_id") or project.default_task_status_id, project=project, owner=request.user, callback=self.post_save, precall=self.pre_save) - tasks_serialized = self.serializer_class(tasks, many=True) + tasks_serialized = self.get_serializer_class()(tasks, many=True) return response.Ok(tasks_serialized.data) diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index 0467ef16..e3d7f986 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -46,8 +46,6 @@ from . import services class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet): model = models.UserStory - serializer_class = serializers.UserStoryNeighborsSerializer - list_serializer_class = serializers.UserStorySerializer permission_classes = (permissions.UserStoryPermission,) filter_backends = (filters.CanViewUsFilterBackend, filters.OwnersFilter, @@ -74,6 +72,12 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi # Specific filter used for filtering neighbor user stories _neighbor_tags_filter = filters.TagsFilter('neighbor_tags') + def get_serializer_class(self, *args, **kwargs): + if self.action in ["retrieve", "by_ref"]: + return serializers.UserStoryNeighborsSerializer + + return serializers.UserStorySerializer + def update(self, request, *args, **kwargs): self.object = self.get_object_or_none() project_id = request.DATA.get('project', None) @@ -201,7 +205,7 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi data["bulk_stories"], project=project, owner=request.user, status_id=data.get("status_id") or project.default_us_status_id, callback=self.post_save, precall=self.pre_save) - user_stories_serialized = self.serializer_class(user_stories, many=True) + user_stories_serialized = self.get_serializer_class()(user_stories, many=True) return response.Ok(user_stories_serialized.data) return response.BadRequest(serializer.errors)