]> git.parisson.com Git - telemeta.git/commitdiff
Advance search add ethnic_group
authorKaltar5679 <killian.mary@outlook.fr>
Wed, 29 Apr 2015 09:10:07 +0000 (11:10 +0200)
committerKaltar5679 <killian.mary@outlook.fr>
Wed, 29 Apr 2015 09:10:07 +0000 (11:10 +0200)
telemeta/forms/haystack_form.py
telemeta/search_indexes.py
telemeta/templates/search/advanceSearch.html
telemeta/views/haystack_search.py

index cc6d628b9db5aded07ab16c8509b9d9f355591c3..3ebe7fdea6c8e40f7d29e9f1323bc1577f90d465 100644 (file)
@@ -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
index 27c45ce21f0b8172c806ed156d2dcd5ac21b65cf..e406e95aeb9b3e5e791f80c71190665f208fa969 100644 (file)
@@ -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()
index 216edb5588d99b22dbef1b4245eaa8779910ac13..41cc0a8ef86b7881bf6622cb4a7b6eeb664ab6cf 100644 (file)
         {% 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}}&amp;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}}&amp;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 %}
@@ -35,9 +35,9 @@
 
                 {% if page.has_previous or page.has_next %}
                     <div>
-                        {% if page.has_previous %}<a href="?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
+                        {% if page.has_previous %}<a href="?{{request.GET.urlencode}};page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
                         |
-                        {% if page.has_next %}<a href="?q={{ query.q }}&code={{ query.code }}&location={{ query.location}}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %}
+                        {% if page.has_next %}<a href="?{{request.GET.urlencode}};page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %}
                     </div>
                 {% endif %}
             {% endwith %}
index 4b15af12a2c33212a409275e38c8ce25ba7ffc3b..374cb31498031d80f122fa7a6bee80812dd2b5cf 100644 (file)
@@ -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':