Skip to content

Commit 5ba519f

Browse files
committed
Fixed facet fieldname lookups to use the proper fieldname.
1 parent d76bdec commit 5ba519f

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

haystack/sites.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,18 +151,19 @@ def get_index_fieldname(self, fieldname):
151151
def get_facet_field_name(self, fieldname):
152152
"""
153153
Returns the actual name of the facet field in the index.
154-
154+
155155
If not found, returns the fieldname provided.
156156
"""
157157
facet_fieldname = None
158-
if fieldname in self._field_mapping():
159-
facet_fieldname = self._field_mapping()[fieldname]['facet_fieldname']
160-
161-
if facet_fieldname:
162-
return self.get_index_fieldname(facet_fieldname)
163-
else:
164-
return fieldname
165-
158+
159+
reverse_map = {}
160+
161+
for field, info in self._field_mapping().items():
162+
if info['facet_fieldname'] and info['facet_fieldname'] == fieldname:
163+
return info['index_fieldname']
164+
165+
return self.get_index_fieldname(fieldname)
166+
166167
def _field_mapping(self):
167168
mapping = {}
168169

@@ -174,14 +175,15 @@ def _field_mapping(self):
174175
if field_name in mapping and field_object.index_fieldname != mapping[field_name]['index_fieldname']:
175176
# We've already seen this field in the list. Raise an exception if index_fieldname differs.
176177
raise SearchFieldError("All uses of the '%s' field need to use the same 'index_fieldname' attribute." % field_name)
177-
178+
178179
facet_fieldname = None
180+
179181
if hasattr(field_object, 'facet_for'):
180182
if field_object.facet_for:
181183
facet_fieldname = field_object.facet_for
182184
else:
183185
facet_fieldname = field_object.instance_name
184-
186+
185187
mapping[field_name] = {
186188
'index_fieldname': field_object.index_fieldname,
187189
'facet_fieldname': facet_fieldname,

tests/core/tests/sites.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,8 @@ def test_basic_get_facet_field_name(self):
235235
self.assertEqual(self.site.get_index_fieldname('title'), 'title')
236236

237237
self.assertEqual(self.site.get_facet_field_name('text'), 'text')
238-
self.assertEqual(self.site.get_facet_field_name('author'), 'author')
239-
self.assertEqual(self.site.get_facet_field_name('title'), 'title')
238+
self.assertEqual(self.site.get_facet_field_name('author'), 'author_exact')
239+
self.assertEqual(self.site.get_facet_field_name('title'), 'title_exact')
240240

241241
def test_more_advanced_get_facet_field_name(self):
242242
self.assertEqual(self.site._cached_field_mapping, None)
@@ -253,9 +253,7 @@ def test_more_advanced_get_facet_field_name(self):
253253
'title': {'facet_fieldname': None, 'index_fieldname': 'title'},
254254
'title_facet': {'facet_fieldname': 'title', 'index_fieldname': 'title_facet'},
255255
})
256-
self.assertEqual(self.site.get_facet_field_name('title'), 'title')
257-
258-
self.assertEqual(self.site.get_facet_field_name('title'), 'title')
256+
self.assertEqual(self.site.get_facet_field_name('title'), 'title_facet')
259257
self.assertEqual(self.site.get_facet_field_name('bare_facet'), 'bare_facet')
260258

261259

0 commit comments

Comments
 (0)