Fixed bug-41: Added wiki pages to the results of searches

remotes/origin/enhancement/email-actions
David Barragán Merino 2013-10-30 19:05:54 +01:00
parent a154d0b5ab
commit 3f944948b9
1 changed files with 17 additions and 1 deletions

View File

@ -9,6 +9,7 @@ from greenmine.base import exceptions as excp
from greenmine.projects.userstories.serializers import UserStorySerializer from greenmine.projects.userstories.serializers import UserStorySerializer
from greenmine.projects.tasks.serializers import TaskSerializer from greenmine.projects.tasks.serializers import TaskSerializer
from greenmine.projects.issues.serializers import IssueSerializer from greenmine.projects.issues.serializers import IssueSerializer
from greenmine.projects.wiki.serializers import WikiPageSerializer
class SearchViewSet(viewsets.ViewSet): class SearchViewSet(viewsets.ViewSet):
@ -25,7 +26,8 @@ class SearchViewSet(viewsets.ViewSet):
result = { result = {
"userstories": self._search_user_stories(project, text), "userstories": self._search_user_stories(project, text),
"tasks": self._search_tasks(project, text), "tasks": self._search_tasks(project, text),
"issues": self._search_issues(project, text) "issues": self._search_issues(project, text),
"wikipages": self._search_wiki_pages(project, text)
} }
result["count"] = sum(map(lambda x: len(x), result.values())) result["count"] = sum(map(lambda x: len(x), result.values()))
@ -73,3 +75,17 @@ class SearchViewSet(viewsets.ViewSet):
serializer = IssueSerializer(queryset, many=True) serializer = IssueSerializer(queryset, many=True)
return serializer.data return serializer.data
def _search_wiki_pages(self, project, text):
where_clause = ("to_tsvector(wiki_wikipage.slug || wiki_wikipage.content) "
"@@ plainto_tsquery(%s)")
model_cls = get_model("wiki", "WikiPage")
queryset = (model_cls.objects
.extra(where=[where_clause], params=[text])
.filter(project_id=project.pk)[:50])
serializer = WikiPageSerializer(queryset, many=True)
return serializer.data