|
|
@@ -428,19 +428,19 @@ class Collection(models.Model):
|
|
|
|
|
|
|
|
|
def get_facet_field(category, field, facets):
|
|
|
- facets = filter(lambda facet: facet['type'] == category and facet['field'] == field, facets)
|
|
|
+ facets = filter(lambda facet: facet['type'] == category and '%(field)s-%(id)s' % facet == field, facets)
|
|
|
if facets:
|
|
|
return facets[0]
|
|
|
else:
|
|
|
return None
|
|
|
|
|
|
-def pairwise2(cat, fq_filter, iterable):
|
|
|
+def pairwise2(field, cat, fq_filter, iterable):
|
|
|
pairs = []
|
|
|
selected_values = [f['value'] for f in fq_filter]
|
|
|
a, b = itertools.tee(iterable)
|
|
|
for element in a:
|
|
|
pairs.append({
|
|
|
- 'cat': cat, 'value': element, 'count': next(a), 'selected': element in selected_values,
|
|
|
+ 'cat': field, 'value': element, 'count': next(a), 'selected': element in selected_values,
|
|
|
'exclude': all([f['exclude'] for f in fq_filter if f['value'] == element])
|
|
|
})
|
|
|
return pairs
|
|
|
@@ -493,10 +493,10 @@ def range_pair(cat, fq_filter, iterable, end, collection_facet):
|
|
|
def augment_solr_response(response, collection, query):
|
|
|
augmented = response
|
|
|
augmented['normalized_facets'] = []
|
|
|
-
|
|
|
+ NAME = '%(field)s-%(id)s'
|
|
|
normalized_facets = []
|
|
|
|
|
|
- selected_values = dict([((fq['id'], fq['field'], fq['type']), fq['filter']) for fq in query['fqs']])
|
|
|
+ selected_values = dict([((fq['id'], NAME % fq, fq['type']), fq['filter']) for fq in query['fqs']])
|
|
|
|
|
|
if response and response.get('facet_counts'):
|
|
|
# e.g. [{u'field': u'sun', u'type': u'query', u'id': u'67b43a63-ed22-747b-47e8-b31aad1431ea', u'label': u'sun'}
|
|
|
@@ -504,14 +504,14 @@ def augment_solr_response(response, collection, query):
|
|
|
category = facet['type']
|
|
|
|
|
|
if category == 'field' and response['facet_counts']['facet_fields']:
|
|
|
- name = facet['field']
|
|
|
+ name = NAME % facet
|
|
|
collection_facet = get_facet_field(category, name, collection['facets'])
|
|
|
- counts = pairwise2(name, selected_values.get((facet['id'], name, category), []), response['facet_counts']['facet_fields'][name])
|
|
|
+ counts = pairwise2(facet['field'], name, selected_values.get((facet['id'], name, category), []), response['facet_counts']['facet_fields'][name])
|
|
|
if collection_facet['properties']['sort'] == 'asc':
|
|
|
counts.reverse()
|
|
|
facet = {
|
|
|
'id': collection_facet['id'],
|
|
|
- 'field': name,
|
|
|
+ 'field': facet['field'],
|
|
|
'type': category,
|
|
|
'label': collection_facet['label'],
|
|
|
'counts': counts,
|