61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from rest_framework import generics
|
|
from rest_framework.exceptions import ParseError
|
|
|
|
from rest_api.filters import MayanObjectPermissionsFilter
|
|
|
|
from .classes import SearchModel
|
|
from .filters import RecentSearchUserFilter
|
|
from .models import RecentSearch
|
|
from .serializers import RecentSearchSerializer
|
|
|
|
|
|
class APIRecentSearchListView(generics.ListAPIView):
|
|
"""
|
|
Returns a list of all the recent searches.
|
|
"""
|
|
|
|
filter_backends = (RecentSearchUserFilter,)
|
|
queryset = RecentSearch.objects.all()
|
|
serializer_class = RecentSearchSerializer
|
|
|
|
|
|
class APIRecentSearchView(generics.RetrieveDestroyAPIView):
|
|
"""
|
|
Returns the selected recent search details.
|
|
"""
|
|
|
|
filter_backends = (RecentSearchUserFilter,)
|
|
queryset = RecentSearch.objects.all()
|
|
serializer_class = RecentSearchSerializer
|
|
|
|
|
|
class APISearchView(generics.ListAPIView):
|
|
"""
|
|
Perform a search operaton
|
|
q -- Term that will be used for the search.
|
|
"""
|
|
|
|
filter_backends = (MayanObjectPermissionsFilter,)
|
|
|
|
def get_queryset(self):
|
|
search_class = self.get_search_class()
|
|
if search_class.permission:
|
|
self.mayan_object_permissions = {'GET': (search_class.permission,)}
|
|
|
|
try:
|
|
queryset, ids, timedelta = search_class.search(
|
|
query_string=self.request.GET, user=self.request.user
|
|
)
|
|
except Exception as exception:
|
|
raise ParseError(unicode(exception))
|
|
|
|
return queryset
|
|
|
|
def get_search_class(self):
|
|
return SearchModel.get('documents.Document')
|
|
|
|
def get_serializer_class(self):
|
|
return self.get_search_class().serializer
|