From 902d1fe9972f05faf82c66d3945dcf02239e50e0 Mon Sep 17 00:00:00 2001 From: Kaltar5679 Date: Thu, 30 Apr 2015 16:37:00 +0200 Subject: [PATCH] Advance search file : add collectors, recorded_from/to_date, and year published patch in template for link of collection --- examples/sandbox/src/django-haystack | 2 +- telemeta/forms/haystack_form.py | 20 +++++++++++++++++++ telemeta/search_indexes.py | 21 ++++++++++++++++++++ telemeta/templates/search/advanceSearch.html | 8 +++++++- 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/examples/sandbox/src/django-haystack b/examples/sandbox/src/django-haystack index 97475f28..bd60745c 160000 --- a/examples/sandbox/src/django-haystack +++ b/examples/sandbox/src/django-haystack @@ -1 +1 @@ -Subproject commit 97475f2813a36e402296d5f2389fe10cd4cd1e0b +Subproject commit bd60745ce82318b1819768c9a31db0579228654d diff --git a/telemeta/forms/haystack_form.py b/telemeta/forms/haystack_form.py index 4549206e..03623547 100644 --- a/telemeta/forms/haystack_form.py +++ b/telemeta/forms/haystack_form.py @@ -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 diff --git a/telemeta/search_indexes.py b/telemeta/search_indexes.py index 9401163f..d7659100 100644 --- a/telemeta/search_indexes.py +++ b/telemeta/search_indexes.py @@ -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 diff --git a/telemeta/templates/search/advanceSearch.html b/telemeta/templates/search/advanceSearch.html index 41cc0a8e..cab07529 100644 --- a/telemeta/templates/search/advanceSearch.html +++ b/telemeta/templates/search/advanceSearch.html @@ -30,7 +30,13 @@ {% endifequal %} {% with object_list as items %}
- {% include "search/mediaitem_listhaystack.html" %} + {% ifequal type 'item' %} + {% include "search/mediaitem_listhaystack.html" %} + {% else %} + {% ifequal type 'collection' %} + {% include "search/mediacollection_listhaystack.html" %} + {%endifequal%} + {%endifequal%}
{% if page.has_previous or page.has_next %} -- 2.39.5