[Backport] Adding neighbors info only in GET requests to API
parent
2be24e96bf
commit
3869f986e7
|
@ -102,8 +102,6 @@ class IssuesOrdering(filters.FilterBackend):
|
||||||
|
|
||||||
|
|
||||||
class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
||||||
serializer_class = serializers.IssueNeighborsSerializer
|
|
||||||
list_serializer_class = serializers.IssueSerializer
|
|
||||||
permission_classes = (permissions.IssuePermission, )
|
permission_classes = (permissions.IssuePermission, )
|
||||||
|
|
||||||
filter_backends = (filters.CanViewIssuesFilterBackend, filters.QFilter,
|
filter_backends = (filters.CanViewIssuesFilterBackend, filters.QFilter,
|
||||||
|
@ -121,6 +119,12 @@ class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin,
|
||||||
"assigned_to",
|
"assigned_to",
|
||||||
"subject")
|
"subject")
|
||||||
|
|
||||||
|
def get_serializer_class(self, *args, **kwargs):
|
||||||
|
if self.action in ["retrieve", "by_ref"]:
|
||||||
|
return serializers.IssueNeighborsSerializer
|
||||||
|
|
||||||
|
return serializers.IssueSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
qs = models.Issue.objects.all()
|
qs = models.Issue.objects.all()
|
||||||
qs = qs.prefetch_related("attachments")
|
qs = qs.prefetch_related("attachments")
|
||||||
|
@ -187,7 +191,7 @@ class IssueViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin,
|
||||||
status=project.default_issue_status, severity=project.default_severity,
|
status=project.default_issue_status, severity=project.default_severity,
|
||||||
priority=project.default_priority, type=project.default_issue_type,
|
priority=project.default_priority, type=project.default_issue_type,
|
||||||
callback=self.post_save, precall=self.pre_save)
|
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)
|
return response.Ok(data=issues_serialized.data)
|
||||||
|
|
||||||
|
|
|
@ -37,13 +37,17 @@ from . import services
|
||||||
|
|
||||||
class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
||||||
model = models.Task
|
model = models.Task
|
||||||
serializer_class = serializers.TaskNeighborsSerializer
|
|
||||||
list_serializer_class = serializers.TaskSerializer
|
|
||||||
permission_classes = (permissions.TaskPermission,)
|
permission_classes = (permissions.TaskPermission,)
|
||||||
filter_backends = (filters.CanViewTasksFilterBackend,)
|
filter_backends = (filters.CanViewTasksFilterBackend,)
|
||||||
filter_fields = ["user_story", "milestone", "project", "assigned_to",
|
filter_fields = ["user_story", "milestone", "project", "assigned_to",
|
||||||
"status__is_closed", "watchers"]
|
"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 pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
if obj.user_story:
|
if obj.user_story:
|
||||||
obj.milestone = obj.user_story.milestone
|
obj.milestone = obj.user_story.milestone
|
||||||
|
@ -97,7 +101,7 @@ class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin,
|
||||||
data["bulk_tasks"], milestone_id=data["sprint_id"], user_story_id=data["us_id"],
|
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,
|
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)
|
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)
|
return response.Ok(tasks_serialized.data)
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,6 @@ from . import services
|
||||||
|
|
||||||
class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, ModelCrudViewSet):
|
||||||
model = models.UserStory
|
model = models.UserStory
|
||||||
serializer_class = serializers.UserStoryNeighborsSerializer
|
|
||||||
list_serializer_class = serializers.UserStorySerializer
|
|
||||||
permission_classes = (permissions.UserStoryPermission,)
|
permission_classes = (permissions.UserStoryPermission,)
|
||||||
|
|
||||||
filter_backends = (filters.StatusFilter, filters.CanViewUsFilterBackend, filters.TagsFilter,
|
filter_backends = (filters.StatusFilter, filters.CanViewUsFilterBackend, filters.TagsFilter,
|
||||||
|
@ -59,6 +57,12 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi
|
||||||
"status__is_closed", "watchers", "is_closed"]
|
"status__is_closed", "watchers", "is_closed"]
|
||||||
order_by_fields = ["backlog_order", "sprint_order", "kanban_order"]
|
order_by_fields = ["backlog_order", "sprint_order", "kanban_order"]
|
||||||
|
|
||||||
|
def get_serializer_class(self, *args, **kwargs):
|
||||||
|
if self.action in ["retrieve", "by_ref"]:
|
||||||
|
return serializers.UserStoryNeighborsSerializer
|
||||||
|
|
||||||
|
return serializers.UserStorySerializer
|
||||||
|
|
||||||
# Specific filter used for filtering neighbor user stories
|
# Specific filter used for filtering neighbor user stories
|
||||||
_neighbor_tags_filter = filters.TagsFilter('neighbor_tags')
|
_neighbor_tags_filter = filters.TagsFilter('neighbor_tags')
|
||||||
|
|
||||||
|
@ -131,7 +135,7 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi
|
||||||
data["bulk_stories"], project=project, owner=request.user,
|
data["bulk_stories"], project=project, owner=request.user,
|
||||||
status_id=data.get("status_id") or project.default_us_status_id,
|
status_id=data.get("status_id") or project.default_us_status_id,
|
||||||
callback=self.post_save, precall=self.pre_save)
|
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.Ok(user_stories_serialized.data)
|
||||||
return response.BadRequest(serializer.errors)
|
return response.BadRequest(serializer.errors)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue