diff --git a/mayan/apps/dynamic_search/api_views.py b/mayan/apps/dynamic_search/api_views.py index 9e6889ddf9..bf68f8d200 100644 --- a/mayan/apps/dynamic_search/api_views.py +++ b/mayan/apps/dynamic_search/api_views.py @@ -4,6 +4,7 @@ from django.core.exceptions import PermissionDenied from django.shortcuts import get_object_or_404 from rest_framework import generics, status +from rest_framework.exceptions import ParseError from rest_framework.response import Response from acls.models import AccessEntry @@ -54,13 +55,16 @@ class APISearchView(generics.ListAPIView): self.serializer_class = document_search.serializer self.mayan_object_permissions = {'GET': [document_search.permission]} - if 'q' in self.request.GET: - # Simple query - query_string = self.request.GET.get('q', u'').strip() - queryset, ids, timedelta = document_search.simple_search(query_string) - else: - # Advanced search - queryset, ids, timedelta = document_search.advanced_search(self.request.GET) + try: + if 'q' in self.request.GET: + # Simple query + query_string = self.request.GET.get('q', u'').strip() + queryset, ids, timedelta = document_search.simple_search(query_string) + else: + # Advanced search + queryset, ids, timedelta = document_search.advanced_search(self.request.GET) + except Exception as exception: + raise ParseError(unicode(exception)) RecentSearch.objects.add_query_for_user(self.request.user, self.request.GET, len(ids)) diff --git a/mayan/apps/dynamic_search/classes.py b/mayan/apps/dynamic_search/classes.py index bbdc40232a..acd57eab74 100644 --- a/mayan/apps/dynamic_search/classes.py +++ b/mayan/apps/dynamic_search/classes.py @@ -40,7 +40,10 @@ class SearchModel(object): return self.search_fields.values() def get_search_field(self, full_name): - return self.search_fields[full_name] + try: + return self.search_fields[full_name] + except KeyError: + raise KeyError('No search field named: %s' % full_name) def get_fields_simple_list(self): """