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()
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
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:
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
def prepare_location(self, obj):
return "%s" % obj.countries()
+
+ def prepare_ethnic_group(self, obj):
+ return "%s" % obj.ethnic_groups()
{% if query %}
<h1>{% trans "Results" %}</h1>
{% ifequal type 'item' %}
- <p><b>Items ({{item_count}}) | <a href="{% url "haystack_advance_search_type" "collection" %}?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&page=1">Collections ({{collection_count}})</a></b></p>
+ <p><b>Items ({{item_count}}) | <a href="{% url "haystack_advance_search_type" "collection" %}?{{request.GET.urlencode}}">Collections ({{collection_count}})</a></b></p>
{% else %}
{% ifequal type 'collection'%}
- <p><b><a href="{% url "haystack_advance_search_type" "item" %}?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&page=1">Items ({{item_count}}) </a>| Collections ({{collection_count}})</b></p>
+ <p><b><a href="{% url "haystack_advance_search_type" "item" %}?{{request.GET.urlencode}}">Items ({{item_count}}) </a>| Collections ({{collection_count}})</b></p>
{% endifequal %}
{% endifequal %}
{% with object_list as items %}
{% if page.has_previous or page.has_next %}
<div>
- {% if page.has_previous %}<a href="?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
+ {% if page.has_previous %}<a href="?{{request.GET.urlencode}};page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
- {% if page.has_next %}<a href="?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
+ {% if page.has_next %}<a href="?{{request.GET.urlencode}};page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% endwith %}
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':