From: Kaltar5679 Date: Wed, 29 Apr 2015 09:10:07 +0000 (+0200) Subject: Advance search add ethnic_group X-Git-Tag: 1.6a^2~15^2~77^2~2 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=e00f178465d859c902ca627e701e8d6d70f26eee;p=telemeta.git Advance search add ethnic_group --- diff --git a/telemeta/forms/haystack_form.py b/telemeta/forms/haystack_form.py index cc6d628b..3ebe7fde 100644 --- a/telemeta/forms/haystack_form.py +++ b/telemeta/forms/haystack_form.py @@ -29,51 +29,12 @@ class HaySearchForm(FacetedSearchForm): return sqs - - -class HayAdvanceFormItem(SearchForm): - - cote = forms.CharField(required=False, label=('Cote'), widget=forms.TextInput(attrs={'type': 'search'})) - - def search(self): - sqs = super(HayAdvanceFormItem, self).search().models(MediaItem) - - if not self.is_valid(): - return sqs - - if self.cleaned_data['q']: - sqs = sqs.filter(content__contains=self.cleaned_data['q']) - - if self.cleaned_data['cote']: - sqs = sqs.filter(content__cote__contains=self.cleaned_data['cote']) - - return sqs - - -class HayAdvanceFormCollection(SearchForm): - - cote = forms.CharField(required=False, label=('Cote'), widget=forms.TextInput(attrs={'type': 'search'})) - - def search(self): - sqs = super(HayAdvanceFormCollection, self).search().models(MediaCollection) - - if not self.is_valid(): - return sqs - - if self.cleaned_data['q']: - sqs = sqs.filter(content__contains=self.cleaned_data['q']) - - if self.cleaned_data['cote']: - sqs = sqs.filter(content__cote__contains=self.cleaned_data['cote']) - - return sqs - - class HayAdvanceForm(SearchForm): #to replace de basic search form field q = forms.CharField(required=False, label=('Title'), widget=forms.TextInput(attrs={'type': 'search'})) code = forms.CharField(required=False, label=('Code'), widget=forms.TextInput(attrs={'type': 'search'})) location = forms.CharField(required=False, label=('Location'), widget=forms.TextInput(attrs={'type': 'search'})) + ethnic_group = forms.CharField(required=False, label=('Population / social group'), widget=forms.TextInput(attrs={'type': 'search'})) def search(self): sqs = SearchQuerySet().load_all() @@ -90,4 +51,7 @@ class HayAdvanceForm(SearchForm): if self.cleaned_data.get('location'): sqs = sqs.filter(location__location__contains=self.cleaned_data['location']) + if self.cleaned_data.get('ethnic_group'): + sqs = sqs.filter(ethnic_group__ethnic_group__contains=self.cleaned_data['ethnic_group']) + return sqs diff --git a/telemeta/search_indexes.py b/telemeta/search_indexes.py index 27c45ce2..e406e95a 100644 --- a/telemeta/search_indexes.py +++ b/telemeta/search_indexes.py @@ -7,10 +7,13 @@ class MediaItemIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) 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) + + #advance search title = indexes.NgramField(model_attr='title') code = indexes.NgramField(model_attr='code') location = indexes.NgramField(model_attr='location__name', default='') - digitized = indexes.BooleanField(default=False, faceted=True) + ethnic_group = indexes.NgramField(model_attr='ethnic_group', default='') def prepare_digitized(self, obj): if obj.file.name: @@ -28,13 +31,16 @@ class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.NgramField(document=True, use_template=True) #rec_date = indexes.DateTimeField(use_template=True, null=True) - title = indexes.NgramField(model_attr='title') - code = indexes.NgramField(model_attr='code') - location = indexes.NgramField(default='') 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) + #advance search + title = indexes.NgramField(model_attr='title') + code = indexes.NgramField(model_attr='code') + location = indexes.NgramField(default='') + ethnic_group = indexes.NgramField(default='') + def prepare_digitized(self, obj): return obj.has_mediafile @@ -43,3 +49,6 @@ class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable): def prepare_location(self, obj): return "%s" % obj.countries() + + def prepare_ethnic_group(self, obj): + return "%s" % obj.ethnic_groups() diff --git a/telemeta/templates/search/advanceSearch.html b/telemeta/templates/search/advanceSearch.html index 216edb55..41cc0a8e 100644 --- a/telemeta/templates/search/advanceSearch.html +++ b/telemeta/templates/search/advanceSearch.html @@ -22,10 +22,10 @@ {% if query %}

{% trans "Results" %}

{% ifequal type 'item' %} -

Items ({{item_count}}) | Collections ({{collection_count}})

+

Items ({{item_count}}) | Collections ({{collection_count}})

{% else %} {% ifequal type 'collection'%} -

Items ({{item_count}}) | Collections ({{collection_count}})

+

Items ({{item_count}}) | Collections ({{collection_count}})

{% endifequal %} {% endifequal %} {% with object_list as items %} @@ -35,9 +35,9 @@ {% if page.has_previous or page.has_next %}
- {% if page.has_previous %}{% endif %}« Previous{% if page.has_previous %}{% endif %} + {% if page.has_previous %}{% endif %}« Previous{% if page.has_previous %}{% endif %} | - {% if page.has_next %}{% endif %}Next »{% if page.has_next %}{% endif %} + {% if page.has_next %}{% endif %}Next »{% if page.has_next %}{% endif %}
{% endif %} {% endwith %} diff --git a/telemeta/views/haystack_search.py b/telemeta/views/haystack_search.py index 4b15af12..374cb314 100644 --- a/telemeta/views/haystack_search.py +++ b/telemeta/views/haystack_search.py @@ -68,16 +68,6 @@ class HaystackAdvanceSearch(SearchView): def extra_context(self): extra = super(HaystackAdvanceSearch, self).extra_context() - - if self.request.GET.get('q'): - extra['title'] = self.request.GET['q'] - - if self.request.GET.get('code'): - extra['code'] = self.request.GET['code'] - - if self.request.GET.get('location'): - extra['location'] = self.request.GET['location'] - extra['collection_count'] = self.form.search().models(MediaCollection).count() extra['item_count'] = self.form.search().models(MediaItem).count() if self.type == 'collection':