From beaeae4e47899427877e817fc33ea7781256abf7 Mon Sep 17 00:00:00 2001 From: mathieu Date: Thu, 19 May 2016 13:48:06 +0200 Subject: [PATCH] Disable boolean search for future fix --- telemeta/forms/haystack_form.py | 76 ++++++++++---------- telemeta/templates/search/advanceSearch.html | 6 +- telemeta/urls.py | 4 +- telemeta/views/search.py | 4 +- 4 files changed, 48 insertions(+), 42 deletions(-) diff --git a/telemeta/forms/haystack_form.py b/telemeta/forms/haystack_form.py index bce1c163..1642a8e7 100644 --- a/telemeta/forms/haystack_form.py +++ b/telemeta/forms/haystack_form.py @@ -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']) diff --git a/telemeta/templates/search/advanceSearch.html b/telemeta/templates/search/advanceSearch.html index b5ec1648..7e3d6393 100644 --- a/telemeta/templates/search/advanceSearch.html +++ b/telemeta/templates/search/advanceSearch.html @@ -40,7 +40,7 @@ {{form.instruments.errors}} {% trans form.instruments.label_tag %} {{form.instruments}} - {% trans "Instruments : Boolean Search" %} + {% comment %}{% trans "Instruments : Boolean Search" %}{% endcomment %}
@@ -235,6 +235,8 @@
{# Show some example queries to run, maybe query syntax, something else? #} {% endif %} + {% comment %} +
@@ -266,6 +268,8 @@
+ {% endcomment %} + {% endblock %} {% block extra_javascript %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 6e4205e0..408bf9f1 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -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[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[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[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'), url(r'^search/playlist_confirmation/(?P[A-Za-z0-9._-]+)/$',NewPlaylistView().addToPlaylist, name='add_confirmation'), diff --git a/telemeta/views/search.py b/telemeta/views/search.py index 735d1d07..2bef482a 100644 --- a/telemeta/views/search.py +++ b/telemeta/views/search.py @@ -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 -- 2.39.5