From 9ca0576a7b7c804db6636e1497cdd5af240743aa Mon Sep 17 00:00:00 2001 From: afilsaime Date: Tue, 5 May 2015 14:51:46 +0200 Subject: [PATCH] change filter display and add selected filters display --- telemeta/forms/haystack_form.py | 2 +- telemeta/search_indexes.py | 6 +++ .../indexes/telemeta/mediacollection_text.txt | 2 + telemeta/templates/search/search.html | 46 +++++++++++++++---- telemeta/views/haystack_search.py | 20 ++++++++ 5 files changed, 67 insertions(+), 9 deletions(-) diff --git a/telemeta/forms/haystack_form.py b/telemeta/forms/haystack_form.py index 4549206e..f6d6464d 100644 --- a/telemeta/forms/haystack_form.py +++ b/telemeta/forms/haystack_form.py @@ -13,7 +13,7 @@ class HaySearchForm(FacetedSearchForm): return sqs if self.cleaned_data['q']: - sqs = sqs.filter(content__contains=self.cleaned_data['q']).facet('item_acces').facet('item_status').facet('digitized') + sqs = sqs.filter(content__contains=self.cleaned_data['q']).facet('item_acces').facet('item_status').facet('digitized').facet('recording_context').facet('physical_format') for facet in self.selected_facets: if ":" not in facet: diff --git a/telemeta/search_indexes.py b/telemeta/search_indexes.py index 9401163f..662de608 100644 --- a/telemeta/search_indexes.py +++ b/telemeta/search_indexes.py @@ -8,6 +8,9 @@ class MediaItemIndex(indexes.SearchIndex, indexes.Indexable): item_acces = indexes.CharField(model_attr='collection__public_access', faceted=True) item_status = indexes.CharField(model_attr='collection__document_status', faceted=True) digitized = indexes.BooleanField(default=False, faceted=True) + recording_context = indexes.CharField(model_attr='collection__recording_context', default='', faceted=True) + #original_format = indexes.CharField(model_attr='collection__original_format', default='', faceted=True) + physical_format = indexes.CharField(model_attr='collection__physical_format', default='', faceted=True) #advance search title = indexes.NgramField(model_attr='title') @@ -43,6 +46,9 @@ class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable): item_acces = indexes.CharField(model_attr='public_access', faceted=True) item_status = indexes.CharField(model_attr='document_status', faceted=True) digitized = indexes.BooleanField(default=False, faceted=True) + recording_context = indexes.CharField(model_attr='recording_context', default='' ,faceted=True) + #original_format = indexes.CharField(model_attr='original_format', default='', faceted=True) + physical_format = indexes.CharField(model_attr='physical_format', default='', faceted=True) #advance search title = indexes.NgramField(model_attr='title') diff --git a/telemeta/templates/search/indexes/telemeta/mediacollection_text.txt b/telemeta/templates/search/indexes/telemeta/mediacollection_text.txt index e41993c2..a877fddd 100644 --- a/telemeta/templates/search/indexes/telemeta/mediacollection_text.txt +++ b/telemeta/templates/search/indexes/telemeta/mediacollection_text.txt @@ -1,6 +1,8 @@ {{ object.title }} {{ object.alt_title }} {{ object.creator }} +{{ object.recorded_from_year }} +{{ object.recorded_to_year }} {{ object.description }} {{ object.collector }} {{ object.publisher_serial }} diff --git a/telemeta/templates/search/search.html b/telemeta/templates/search/search.html index 7ad0e700..8ea2a875 100644 --- a/telemeta/templates/search/search.html +++ b/telemeta/templates/search/search.html @@ -85,22 +85,52 @@
-
+ {% if selected_facets %} +

» selected facets : + {{selected_facets|join:" + "}} + {% endif %}

{% with object_list as items %}
{% ifequal type 'item' %} diff --git a/telemeta/views/haystack_search.py b/telemeta/views/haystack_search.py index 29ef8501..8d138d66 100644 --- a/telemeta/views/haystack_search.py +++ b/telemeta/views/haystack_search.py @@ -11,6 +11,7 @@ class HaystackSearch(FacetedSearchView): def __call__(self, request, type=None): self.type = type self.form_class = HaySearchForm + self.selected_facet=self.selected_facet_list(request.GET.getlist('selected_facets', ['a'])) return super(HaystackSearch, self).__call__(request) def get_query(self): @@ -22,6 +23,22 @@ class HaystackSearch(FacetedSearchView): else: return super(HaystackSearch, self).get_results().models(MediaItem) + def selected_facet_list(self,selected_facets): + facet_list=[] + for facet in selected_facets: + if ":" not in facet: + continue + + field, value = facet.split(":", 1) + + if value and not value in facet_list: + if field=='digitized_exact': + facet_list.append('Sound') + else: + facet_list.append(value) + + return facet_list + def extra_context(self): extra = super(HaystackSearch, self).extra_context() extra['collection_count'] = super(HaystackSearch, self).get_results().models(MediaCollection).count() @@ -37,10 +54,13 @@ class HaystackSearch(FacetedSearchView): extra['viewable_count'] = self.get_results().narrow('item_acces:full OR item_acces:mixed').narrow('digitized:T').count() extra['digitized_count'] = self.get_results().narrow('digitized:T').count() + if self.type == 'collection': extra['type'] = 'collection' else: extra['type'] = 'item' + + extra['selected_facets']=self.selected_facet return extra -- 2.39.5