]> git.parisson.com Git - telemeta.git/commitdiff
Disable boolean search for future fix
authormathieu <mathieu.boye28@gmail.com>
Thu, 19 May 2016 11:48:06 +0000 (13:48 +0200)
committermathieu <mathieu.boye28@gmail.com>
Thu, 19 May 2016 11:48:06 +0000 (13:48 +0200)
telemeta/forms/haystack_form.py
telemeta/templates/search/advanceSearch.html
telemeta/urls.py
telemeta/views/search.py

index bce1c16333a02aadfa33a32356cf13fe5230e1fe..1642a8e728bb6b51d28911a4d36cf3d927b8b9da 100644 (file)
@@ -27,7 +27,7 @@ from haystack.query import SearchQuerySet, SQ
 from datetime import date
 from django.utils.translation import ugettext_lazy as _
 import operator
-from telemeta.views.boolean_search import *
+#from telemeta.views.boolean_search import *
 
 class HaySearchForm(FacetedSearchForm):
 
@@ -156,42 +156,41 @@ class HayAdvanceForm(SearchForm):
     physical_format = forms.CharField(required=False, label=(_('physical format')), widget=forms.Select(attrs={'style': 'width:100%'}, choices=list_physical_format()))
     code = forms.CharField(required=False, label=(_('code')), widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'search'}))
 
-    def filter_instru(self, query):
-        if isinstance(query, str) or isinstance(query, unicode):
-             try:
-                 BooleanSearchView().is_correct_query(query)
-             except TelemetaError:
-                 return SQ(instruments__startswith=query)
-
-        operateur = "ET"
-        if isinstance(query, list):
-            query_terms = query
-        else:
-            query_terms = query.split()
-        sqTab = []
-        valeur = ""
-        while len(query_terms) != 0:
-            term = query_terms.pop(0)
-            if term == "ET" or term == "OU":
-                if valeur != "":
-                    sqTab.append(('instruments__startswith', valeur.strip()))
-                    valeur = ""
-                if term != operateur:
-                    sqTab = [SQ(filtre) for filtre in sqTab]
-                    objet = reduce(operator.or_, sqTab) if operateur == "OU" else reduce(operator.and_, sqTab)
-                    del sqTab[:]
-                    sqTab.append(objet)
-                    operateur = "OU" if operateur == "ET" else "ET"
-            elif term == "(":
-                indexCloseBracket = get_close_bracket(query_terms)
-                sqTab.append(self.filter_instru(query_terms[:indexCloseBracket]))
-                del query_terms[:indexCloseBracket + 1]
-            else:
-                valeur += term + " "
-        if valeur != "":
-            sqTab.append(('instruments__startswith', valeur.strip()))
-        sqTab = [SQ(filtre) for filtre in sqTab]
-        return SQ(reduce(operator.and_, sqTab) if operateur == "ET" else reduce(operator.or_, sqTab))
+    #def filter_instru(self, query):
+    #    if isinstance(query, str) or isinstance(query, unicode):
+    #         try:
+    #             BooleanSearchView().is_correct_query(query)
+    #         except TelemetaError:
+    #             return SQ(instruments__startswith=query)
+    #    operateur = "ET"
+    #    if isinstance(query, list):
+    #        query_terms = query
+    #    else:
+    #        query_terms = query.split()
+    #    sqTab = []
+    #    valeur = ""
+    #    while len(query_terms) != 0:
+    #        term = query_terms.pop(0)
+    #        if term == "ET" or term == "OU":
+    #            if valeur != "":
+    #                sqTab.append(('instruments__startswith', valeur.strip()))
+    #                valeur = ""
+    #            if term != operateur:
+    #                sqTab = [SQ(filtre) for filtre in sqTab]
+    #                objet = reduce(operator.or_, sqTab) if operateur == "OU" else reduce(operator.and_, sqTab)
+    #                del sqTab[:]
+    #                sqTab.append(objet)
+    #                operateur = "OU" if operateur == "ET" else "ET"
+    #        elif term == "(":
+    #            indexCloseBracket = get_close_bracket(query_terms)
+    #            sqTab.append(self.filter_instru(query_terms[:indexCloseBracket]))
+    #            del query_terms[:indexCloseBracket + 1]
+    #        else:
+    #            valeur += term + " "
+    #    if valeur != "":
+    #        sqTab.append(('instruments__startswith', valeur.strip()))
+    #    sqTab = [SQ(filtre) for filtre in sqTab]
+    #    return SQ(reduce(operator.and_, sqTab) if operateur == "ET" else reduce(operator.or_, sqTab))
 
     def search(self):
         sqs = SearchQuerySet().load_all()
@@ -213,7 +212,8 @@ class HayAdvanceForm(SearchForm):
                 sqs = sqs.filter(ethnic_group__contains=self.cleaned_data['ethnic_group'])
 
         if self.cleaned_data.get('instruments'):
-            sqs = sqs.filter(self.filter_instru(self.cleaned_data['instruments']))
+            #sqs = sqs.filter(self.filter_instru(self.cleaned_data['instruments']))
+            sqs = sqs.filter(instruments__startswith=self.cleaned_data['instruments'])
 
         if self.cleaned_data.get('collectors'):
             sqs = sqs.filter(collectors__startswith=self.cleaned_data['collectors'])
index b5ec1648b5b82057c10d45a71f39ecc6b71c9838..7e3d63935503d1f6ac8f7f5f7e5596c71795f87f 100644 (file)
@@ -40,7 +40,7 @@
                     {{form.instruments.errors}}
                     {% trans form.instruments.label_tag %}
                     {{form.instruments}}
-                    <a href="#" id="btn" class="col-md-5 btn btn-default" style="width: 100%; margin-top: 1%">{% trans "Instruments : Boolean Search" %}</a>
+                    {% comment %}<a href="#" id="btn" class="col-md-5 btn btn-default" style="width: 100%; margin-top: 1%">{% trans "Instruments : Boolean Search" %}</a>{% endcomment %}
                 </div>
 
                 <div class="fieldWrapper">
             <div id="results"></div>{# Show some example queries to run, maybe query syntax, something else? #}
         {% endif %}
 
+    {% comment %}
+
         <div id="dialog" title="{% trans "Instruments : Boolean Search" %}">
 
             <form>
 
         </div>
 
+        {% endcomment %}
+
 {% endblock %}
 {% block extra_javascript %}
     <script src="{{ STATIC_URL }}jquery-ui/jquery-ui.min.js" type="text/javascript"></script>
index 6e4205e0fc00d1639d060f304424f13dc0ad2577..408bf9f19c2b7c418b39a1a7b400b5609167d038 100644 (file)
@@ -45,7 +45,7 @@ playlist_view = PlaylistView()
 profile_view = ProfileView()
 geo_view = GeoView()
 resource_view = ResourceView()
-boolean_view = BooleanSearchView()
+#boolean_view = BooleanSearchView()
 
 # ID's regular expressions
 export_extensions = "|".join(item_view.list_export_extensions())
@@ -131,7 +131,7 @@ urlpatterns = patterns('',
     url(r'^search/quick/(?P<type>[A-Za-z0-9._-]+)/$', HaystackSearch(), name='haystack_search_type'),
     url(r'^search/advance/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search'),
     url(r'^search/advance/(?P<type>[A-Za-z0-9._-]+)/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search_type'),
-    url(r'^search/booleaninstru/$', boolean_view.get_boolean_query),
+    #url(r'^search/booleaninstru/$', boolean_view.get_boolean_query),
 
     url(r'^search/playlist_add/(?P<type>[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'),
     url(r'^search/playlist_confirmation/(?P<type>[A-Za-z0-9._-]+)/$',NewPlaylistView().addToPlaylist, name='add_confirmation'),
index 735d1d07245327d55785991a6b271eee8bc4b3d2..2bef482a4753179ceb9208e183fe6f5a566a6976 100644 (file)
@@ -24,6 +24,8 @@ from telemeta.forms.haystack_form import *
 from saved_searches.views import SavedSearchView
 import re
 import unicodedata
+import simplejson as json
+from django.http import HttpResponse
 
 
 class HaystackSearch(FacetedSearchView, SavedSearchView):
@@ -158,7 +160,7 @@ class HaystackAdvanceSearch(SavedSearchView):
             extra['type'] = 'collection'
 
         extra['results_page'] = self.results_per_page
-        extra['booleanForm'] = formset_factory(BooleanSearch, extra=2)
+        #extra['booleanForm'] = formset_factory(BooleanSearch, extra=2)
         extra['request_url'] = self.requestURL
         return extra