From 3449139e76e1600389e25aa007a50a5662d539b6 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Mon, 14 Sep 2015 15:31:36 +0100 Subject: [PATCH] Replace backend _search methods with search_x_class attributes --- wagtail/wagtailsearch/backends/base.py | 9 +++++---- wagtail/wagtailsearch/backends/db.py | 6 +++--- wagtail/wagtailsearch/backends/elasticsearch.py | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/wagtail/wagtailsearch/backends/base.py b/wagtail/wagtailsearch/backends/base.py index 27d7d6b60..a2d088d5b 100644 --- a/wagtail/wagtailsearch/backends/base.py +++ b/wagtail/wagtailsearch/backends/base.py @@ -173,6 +173,9 @@ class BaseSearchResults(object): class BaseSearch(object): + search_query_class = None + search_results_class = None + def __init__(self, params): pass @@ -197,9 +200,6 @@ class BaseSearch(object): def delete(self, obj): raise NotImplementedError - def _search(self, queryset, query_string, fields=None): - raise NotImplementedError - def search(self, query_string, model_or_queryset, fields=None, filters=None, prefetch_related=None): # Find model/queryset if isinstance(model_or_queryset, QuerySet): @@ -227,4 +227,5 @@ class BaseSearch(object): queryset = queryset.prefetch_related(prefetch) # Search - return self._search(queryset, query_string, fields=fields) + search_query = self.search_query_class(queryset, query_string, fields=fields) + return self.search_results_class(self, search_query) diff --git a/wagtail/wagtailsearch/backends/db.py b/wagtail/wagtailsearch/backends/db.py index e7e32fce0..538f2b54c 100644 --- a/wagtail/wagtailsearch/backends/db.py +++ b/wagtail/wagtailsearch/backends/db.py @@ -72,6 +72,9 @@ class DBSearchResults(BaseSearchResults): class DBSearch(BaseSearch): + search_query_class = DBSearchQuery + search_results_class = DBSearchResults + def __init__(self, params): super(DBSearch, self).__init__(params) @@ -93,8 +96,5 @@ class DBSearch(BaseSearch): def delete(self, obj): pass # Not needed - def _search(self, queryset, query_string, fields=None): - return DBSearchResults(self, DBSearchQuery(queryset, query_string, fields=fields)) - SearchBackend = DBSearch diff --git a/wagtail/wagtailsearch/backends/elasticsearch.py b/wagtail/wagtailsearch/backends/elasticsearch.py index e171aa9f4..586d76a81 100644 --- a/wagtail/wagtailsearch/backends/elasticsearch.py +++ b/wagtail/wagtailsearch/backends/elasticsearch.py @@ -467,6 +467,9 @@ class ElasticSearchAtomicIndexRebuilder(ElasticSearchIndexRebuilder): class ElasticSearch(BaseSearch): + search_query_class = ElasticSearchQuery + search_results_class = ElasticSearchResults + def __init__(self, params): super(ElasticSearch, self).__init__(params) @@ -579,8 +582,5 @@ class ElasticSearch(BaseSearch): except NotFoundError: pass # Document doesn't exist, ignore this exception - def _search(self, queryset, query_string, fields=None): - return ElasticSearchResults(self, ElasticSearchQuery(queryset, query_string, fields=fields)) - SearchBackend = ElasticSearch