From ba9f580ef0e82afcc45c90e0639dc5525d4853f1 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Wed, 1 Oct 2014 16:42:48 +0100 Subject: [PATCH] fix undefined variable when raising the 'cannot filter ElasticSearch results on this field' error --- wagtail/wagtailsearch/backends/elasticsearch.py | 2 +- wagtail/wagtailsearch/tests/test_elasticsearch_backend.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wagtail/wagtailsearch/backends/elasticsearch.py b/wagtail/wagtailsearch/backends/elasticsearch.py index a76fe69b6..1fd0febc0 100644 --- a/wagtail/wagtailsearch/backends/elasticsearch.py +++ b/wagtail/wagtailsearch/backends/elasticsearch.py @@ -140,7 +140,7 @@ class ElasticSearchQuery(object): # Give error if the field doesn't exist if field is None: - raise FieldError('Cannot filter ElasticSearch results with field "' + field_name + '". Please add FilterField(\'' + field_name + '\') to ' + self.queryset.model.__name__ + '.search_fields.') + raise FieldError('Cannot filter ElasticSearch results with field "' + field_attname + '". Please add FilterField(\'' + field_attname + '\') to ' + self.queryset.model.__name__ + '.search_fields.') # Get the name of the field in the index field_index_name = field.get_index_name(self.queryset.model) diff --git a/wagtail/wagtailsearch/tests/test_elasticsearch_backend.py b/wagtail/wagtailsearch/tests/test_elasticsearch_backend.py index 027c686fc..8cd8ce4ea 100644 --- a/wagtail/wagtailsearch/tests/test_elasticsearch_backend.py +++ b/wagtail/wagtailsearch/tests/test_elasticsearch_backend.py @@ -24,6 +24,13 @@ class TestElasticSearchBackend(BackendTests, TestCase): # Didn't crash, yay! + def test_filter_on_non_filterindex_field(self): + # id is not listed in the search_fields for SearchTest; this should raise a FieldError + from wagtail.wagtailsearch.backends.elasticsearch import FieldError + + with self.assertRaises(FieldError): + results = list(self.backend.search("Hello", models.SearchTest, filters=dict(id=42))) + def test_partial_search(self): # Reset the index self.backend.reset_index()