kopia lustrzana https://github.com/wagtail/wagtail
				
				
				
			Ensured BaseSearchBackend.search method always return BaseSearchResults subclasses
							rodzic
							
								
									2b09cdaef2
								
							
						
					
					
						commit
						0cb16f2a01
					
				|  | @ -3,12 +3,9 @@ from __future__ import absolute_import, unicode_literals | |||
| from collections import OrderedDict | ||||
| 
 | ||||
| from django.conf import settings | ||||
| from django.db.models.query import QuerySet | ||||
| from rest_framework.pagination import BasePagination | ||||
| from rest_framework.response import Response | ||||
| 
 | ||||
| from wagtail.wagtailsearch.backends.base import BaseSearchResults | ||||
| 
 | ||||
| from .utils import BadRequestError | ||||
| 
 | ||||
| 
 | ||||
|  | @ -36,7 +33,7 @@ class WagtailPagination(BasePagination): | |||
|         stop = offset + limit | ||||
| 
 | ||||
|         self.view = view | ||||
|         self.total_count = queryset.count() if isinstance(queryset, (BaseSearchResults, QuerySet)) else len(queryset) | ||||
|         self.total_count = queryset.count() | ||||
|         return queryset[start:stop] | ||||
| 
 | ||||
|     def get_paginated_response(self, data): | ||||
|  |  | |||
|  | @ -3,12 +3,9 @@ from __future__ import absolute_import, unicode_literals | |||
| from collections import OrderedDict | ||||
| 
 | ||||
| from django.conf import settings | ||||
| from django.db.models.query import QuerySet | ||||
| from rest_framework.pagination import BasePagination | ||||
| from rest_framework.response import Response | ||||
| 
 | ||||
| from wagtail.wagtailsearch.backends.base import BaseSearchResults | ||||
| 
 | ||||
| from .utils import BadRequestError | ||||
| 
 | ||||
| 
 | ||||
|  | @ -36,7 +33,7 @@ class WagtailPagination(BasePagination): | |||
|         stop = offset + limit | ||||
| 
 | ||||
|         self.view = view | ||||
|         self.total_count = queryset.count() if isinstance(queryset, (BaseSearchResults, QuerySet)) else len(queryset) | ||||
|         self.total_count = queryset.count() | ||||
|         return queryset[start:stop] | ||||
| 
 | ||||
|     def get_paginated_response(self, data): | ||||
|  |  | |||
|  | @ -186,6 +186,20 @@ class BaseSearchResults(object): | |||
|         return clone | ||||
| 
 | ||||
| 
 | ||||
| class EmptySearchResults(BaseSearchResults): | ||||
|     def __init__(self): | ||||
|         return super(EmptySearchResults, self).__init__(None, None) | ||||
| 
 | ||||
|     def _clone(self): | ||||
|         return self.__class__() | ||||
| 
 | ||||
|     def _do_search(self): | ||||
|         return [] | ||||
| 
 | ||||
|     def _do_count(self): | ||||
|         return 0 | ||||
| 
 | ||||
| 
 | ||||
| class BaseSearchBackend(object): | ||||
|     query_class = None | ||||
|     results_class = None | ||||
|  | @ -230,11 +244,11 @@ class BaseSearchBackend(object): | |||
| 
 | ||||
|         # Model must be a class that is in the index | ||||
|         if not class_is_indexed(model): | ||||
|             return [] | ||||
|             return EmptySearchResults() | ||||
| 
 | ||||
|         # Check that theres still a query string after the clean up | ||||
|         if query_string == "": | ||||
|             return [] | ||||
|             return EmptySearchResults() | ||||
| 
 | ||||
|         # Only fields that are indexed as a SearchField can be passed in fields | ||||
|         if fields: | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Morgan Aubert
						Morgan Aubert