]> git.parisson.com Git - telemeta.git/commitdiff
change filter display and add selected filters display
authorafilsaime <shadow_kungfu@hotmail.fr>
Tue, 5 May 2015 12:51:46 +0000 (14:51 +0200)
committerafilsaime <shadow_kungfu@hotmail.fr>
Tue, 5 May 2015 12:51:46 +0000 (14:51 +0200)
telemeta/forms/haystack_form.py
telemeta/search_indexes.py
telemeta/templates/search/indexes/telemeta/mediacollection_text.txt
telemeta/templates/search/search.html
telemeta/views/haystack_search.py

index 4549206ee0a1ae2d4ab1b62c12b5935369c5e8a4..f6d6464dd670ea395db66c0a41d88af39b986e6f 100644 (file)
@@ -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:
index 9401163fa2435c42af0c1ed43048f7078a967d04..662de6087d457e007837d5c85f8ae6954d13c46f 100644 (file)
@@ -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')
index e41993c24cedea9c102d9f757ad8da4861e9623f..a877fddd0adc62ebdfc7202ee26b2edb11abf2f1 100644 (file)
@@ -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 }}
index 7ad0e7006b6ad39d822f5c6a98b1775d53e32619..8ea2a8759a4894c34e0eb3be613cc3dfe61eecf6 100644 (file)
                 </table>
                 <div class="btn-group btn-group-justified">
                     <div class="btn-group" role="group" >
-                        <button type="button " class="btn btn-default dropdown-toggle" data-toggle="dropdown" style="background-color:#6a0307;color:white;font-weight:bold">
-                            <span class="glyphicon glyphicon-chevron-down"></span> Other Filters <span class="glyphicon glyphicon-chevron-down"></span>
+                        <button type="button " class="btn btn-default dropdown-toggle" data-toggle="dropdown" style="background-color:#6a0307;color:white;font-weight:bold;text-align:left">
+                            <span class="glyphicon glyphicon-chevron-down"></span> Other Filters
                         </button>
                         <div class="dropdown-menu" role="menu" style="width:100%">
                             <table class="table" style="font-size:0.9em">
-                                <tr><td>Alzdqdzl</td><td><a href="{% url "telemeta-search-type" "items" %}" class="">All</a></td></tr>
-                                <tr><td>Azdqll</td><td><a href="{% url "telemeta-search-type" "items" %}">Sounds</a></td></tr>
-                                <tr><td>Azdqdll</td><td><a href="{% url "telemeta-search-published" "items" %">Published</a></td></tr>
-                                <tr><td>Alzfzl</td><td><a href="{% url "telemeta-search-unpublished" "items" %}">Unpublished</a></td></tr>
-                                <tr><td>Alefqsfl</td><td><a href="{% url "telemeta-search-full" "items" %}">Fu</a></td></tr>
-                                <tr><td>zfqfef</td><td><a href="{% url "telemeta-search-none" "items" %}">None</a></td></tr>
+                                <tr>
+                                    {% if facets.fields.recording_context %}
+                                        <td>Recording Context</td>
+                                        {% for recording_context in facets.fields.recording_context %}
+                                            {% ifequal recording_context.0 'studio'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=recording_context_exact:{{ recording_context.0|urlencode }}">{{ recording_context.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ recording_context.1 }}</span></td>
+                                            {% endifequal %}
+                                            {% ifequal recording_context.0 'radio'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=recording_context_exact:{{ recording_context.0|urlencode }}">{{ recording_context.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ recording_context.1 }}</span></td>
+                                            {% endifequal %}
+                                            {% ifequal recording_context.0 'terrain'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=recording_context_exact:{{ recording_context.0|urlencode }}">{{ recording_context.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ recording_context.1 }}</span></td>
+                                            {% endifequal %}
+                                        {% endfor %}
+                                    {% endif %}
+                                </tr>
+                                <tr>
+                                    {% if facets.fields.physical_format %}
+                                        <td>Physical Format</td>
+                                        {% for physical_format in facets.fields.physical_format %}
+                                            {% ifequal physical_format.0 'CDR'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=physical_format_exact:{{ physical_format.0|urlencode }}">{{ physical_format.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ physical_format.1 }}</span></td>
+                                            {% endifequal %}
+                                            {% ifequal physical_format.0 'disque'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=physical_format_exact:{{ physical_format.0|urlencode }}">{{ physical_format.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ physical_format.1 }}</span></td>
+                                            {% endifequal %}
+                                            {% ifequal physical_format.0 'cylindre'%}
+                                                <td><a href="{{ request.get_full_path }}&amp;selected_facets=physical_format_exact:{{ physical_format.0|urlencode }}">{{ physical_format.0 }}</a> <span style="background-color:#6a0307" class="badge">{{ physical_format.1 }}</span></td>
+                                            {% endifequal %}
+                                        {% endfor %}
+                                    {% endif %}
+                                </tr>
                             </table>
                         </div>
                     </div>
                 </div>
             </div>
+            {% if selected_facets %}
+                 <p><b> &raquo; selected facets :
+                     {{selected_facets|join:" + "}}
+             {% endif %}</b></p>
              {% with object_list as items %}
                 <div class="fullpage">
                     {% ifequal type 'item' %}
index 29ef850185d9e694d347a34e8c28ba8340f7a097..8d138d667064730636ae353d27e119c092b339aa 100644 (file)
@@ -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