diff --git a/taiga/searches/api.py b/taiga/searches/api.py index 6aa2060d..e4934194 100644 --- a/taiga/searches/api.py +++ b/taiga/searches/api.py @@ -20,13 +20,11 @@ from taiga.base.api import viewsets from taiga.base import response from taiga.base.api.utils import get_object_or_404 -from taiga.projects.userstories.serializers import UserStorySerializer -from taiga.projects.tasks.serializers import TaskSerializer -from taiga.projects.issues.serializers import IssueSerializer -from taiga.projects.wiki.serializers import WikiPageSerializer from taiga.permissions.service import user_has_perm from . import services +from . import serializers + class SearchViewSet(viewsets.ViewSet): @@ -55,20 +53,20 @@ class SearchViewSet(viewsets.ViewSet): def _search_user_stories(self, project, text): queryset = services.search_user_stories(project, text) - serializer = UserStorySerializer(queryset, many=True) + serializer = serializers.UserStorySearchResultsSerializer(queryset, many=True) return serializer.data def _search_tasks(self, project, text): queryset = services.search_tasks(project, text) - serializer = TaskSerializer(queryset, many=True) + serializer = serializers.TaskSearchResultsSerializer(queryset, many=True) return serializer.data def _search_issues(self, project, text): queryset = services.search_issues(project, text) - serializer = IssueSerializer(queryset, many=True) + serializer = serializers.IssueSearchResultsSerializer(queryset, many=True) return serializer.data def _search_wiki_pages(self, project, text): queryset = services.search_wiki_pages(project, text) - serializer = WikiPageSerializer(queryset, many=True) + serializer = serializers.WikiPageSearchResultsSerializer(queryset, many=True) return serializer.data diff --git a/taiga/searches/serializers.py b/taiga/searches/serializers.py new file mode 100644 index 00000000..ee713fff --- /dev/null +++ b/taiga/searches/serializers.py @@ -0,0 +1,49 @@ +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino +# Copyright (C) 2014 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from taiga.projects.issues.serializers import IssueSerializer +from taiga.projects.userstories.serializers import UserStorySerializer +from taiga.projects.tasks.serializers import TaskSerializer +from taiga.projects.wiki.serializers import WikiPageSerializer + +from taiga.projects.issues.models import Issue +from taiga.projects.userstories.models import UserStory +from taiga.projects.tasks.models import Task +from taiga.projects.wiki.models import WikiPage + + +class IssueSearchResultsSerializer(IssueSerializer): + class Meta: + model = Issue + fields = ('id', 'ref', 'subject', 'status', 'assigned_to') + + +class TaskSearchResultsSerializer(TaskSerializer): + class Meta: + model = Task + fields = ('id', 'ref', 'subject', 'status', 'assigned_to') + + +class UserStorySearchResultsSerializer(UserStorySerializer): + class Meta: + model = UserStory + fields = ('id', 'ref', 'subject', 'status', 'total_points') + + +class WikiPageSearchResultsSerializer(WikiPageSerializer): + class Meta: + model = WikiPage + fields = ('id', 'slug')