]> git.parisson.com Git - telemeta.git/commitdiff
Advance search file : add collectors, recorded_from/to_date, and year published
authorKaltar5679 <killian.mary@outlook.fr>
Thu, 30 Apr 2015 14:37:00 +0000 (16:37 +0200)
committerKaltar5679 <killian.mary@outlook.fr>
Thu, 30 Apr 2015 14:37:00 +0000 (16:37 +0200)
patch in template for link of collection

examples/sandbox/src/django-haystack
telemeta/forms/haystack_form.py
telemeta/search_indexes.py
telemeta/templates/search/advanceSearch.html

index 97475f2813a36e402296d5f2389fe10cd4cd1e0b..bd60745ce82318b1819768c9a31db0579228654d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 97475f2813a36e402296d5f2389fe10cd4cd1e0b
+Subproject commit bd60745ce82318b1819768c9a31db0579228654d
index 4549206ee0a1ae2d4ab1b62c12b5935369c5e8a4..03623547908dfaef2e0a0bf65adddce673a51e8c 100644 (file)
@@ -40,6 +40,11 @@ class HayAdvanceForm(SearchForm):
     #list_ethnic = SearchQuerySet().load_all().models(MediaCollection).ethnic_groups().distinct
     #ethnic_group = forms.ChoiceField(required=False, label=('Population / social group'), widget=forms.Select, choices = list_ethnic))
     instruments = forms.CharField(required=False, label=('Instruments'), widget=forms.TextInput(attrs={'type': 'search'}))
+    collectors = forms.CharField(required=False, label=('Depositor / contributor'), widget=forms.TextInput(attrs={'type': 'search'}))
+    recorded_from_date = forms.DateField(required=False, label=('Recorded from'), widget=forms.DateInput(attrs={'type': 'search', 'placeholder': 'MM/DD/YYYY'}))
+    recorded_to_date = forms.DateField(required=False, label=('Recorded to'), widget=forms.DateInput(attrs={'type': 'search', 'placeholder': 'MM/DD/YYYY'}))
+    year_published_from = forms.IntegerField(required=False, label=('Year published from'), widget=forms.TextInput(attrs={'type': 'search', 'placeholder': '1234567890'}))
+    year_published_to = forms.IntegerField(required=False, label=('Year published to'), widget=forms.TextInput(attrs={'type': 'search', 'placeholder': '1234567890'}))
 
     def search(self):
         sqs = SearchQuerySet().load_all()
@@ -62,4 +67,19 @@ class HayAdvanceForm(SearchForm):
         if self.cleaned_data.get('instruments'):
             sqs = sqs.filter(instruments__instruments__contains=self.cleaned_data['instruments'])
 
+        if self.cleaned_data.get('collectors'):
+            sqs = sqs.filter(collectors__collectors__contains=self.cleaned_data['collectors'])
+
+        if self.cleaned_data['recorded_from_date']:
+            sqs = sqs.filter(recorded_from_date__gte=self.cleaned_data['recorded_from_date'])
+
+        if self.cleaned_data['recorded_to_date']:
+            sqs = sqs.filter(recorded_to_date__lte=self.cleaned_data['recorded_to_date'])
+
+        if self.cleaned_data['year_published_from']:
+            sqs = sqs.filter(year_published__gte=self.cleaned_data['year_published_from'])
+
+        if self.cleaned_data['year_published_to']:
+            sqs = sqs.filter(year_published__lte=self.cleaned_data['year_published_to'])
+
         return sqs
index 9401163fa2435c42af0c1ed43048f7078a967d04..d765910046f8b1ddd8878b1c5dc0ca517a8e726c 100644 (file)
@@ -15,6 +15,10 @@ class MediaItemIndex(indexes.SearchIndex, indexes.Indexable):
     location = indexes.NgramField(model_attr='location__name', default='')
     ethnic_group = indexes.NgramField(model_attr='ethnic_group', default='')
     instruments = indexes.NgramField(default='')
+    collectors = indexes.NgramField(model_attr='collector', default='')
+    recorded_from_date = indexes.DateField(model_attr='recorded_from_date', default='')
+    recorded_to_date = indexes.DateField(model_attr='recorded_to_date', default='')
+    year_published = indexes.IntegerField(model_attr='collection__year_published', default='')
 
     def prepare_digitized(self, obj):
         if obj.file.name:
@@ -35,6 +39,13 @@ class MediaItemIndex(indexes.SearchIndex, indexes.Indexable):
             instruments.append(material.alias)
         return "%s" % instruments
 
+    def prepare_collectors(self, obj):
+        collectors = []
+        collectors.append(obj.collection.creator)
+        collectors.append(obj.collection.collector)
+        collectors.append(obj.collector)
+        return "%s" % collectors
+
 
 class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable):
 
@@ -50,6 +61,10 @@ class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable):
     location = indexes.NgramField(default='')
     ethnic_group = indexes.NgramField(default='')
     instruments = indexes.NgramField(default='')
+    collectors = indexes.NgramField(default='')
+    recorded_from_date = indexes.DateField(model_attr='recorded_from_year', default='')
+    recorded_to_date = indexes.DateField(model_attr='recorded_to_year', default='')
+    year_published = indexes.IntegerField(model_attr='year_published', default='')
 
     def prepare_digitized(self, obj):
         return obj.has_mediafile
@@ -76,3 +91,9 @@ class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable):
                     instruments.append(material.alias)
 
         return "%s" % instruments
+
+    def prepare_collectors(self, obj):
+        collectors = []
+        collectors.append(obj.creator)
+        collectors.append(obj.collector)
+        return "%s" % collectors
index 41cc0a8ef86b7881bf6622cb4a7b6eeb664ab6cf..cab075298e3ad5234faded8dbc700734e99e4d65 100644 (file)
              {% endifequal %}
              {% with object_list as items %}
                 <div class="fullpage">
-                    {% include "search/mediaitem_listhaystack.html" %}
+                    {% ifequal type 'item' %}
+                        {% include "search/mediaitem_listhaystack.html" %}
+                    {% else %}
+                        {% ifequal type 'collection' %}
+                            {% include "search/mediacollection_listhaystack.html" %}
+                        {%endifequal%}
+                    {%endifequal%}
                 </div>
 
                 {% if page.has_previous or page.has_next %}