]> git.parisson.com Git - telemeta.git/commitdiff
Move functions boolean search to boolean_search.py
authormathieu <mathieu.boye28@gmail.com>
Thu, 19 May 2016 11:21:14 +0000 (13:21 +0200)
committermathieu <mathieu.boye28@gmail.com>
Thu, 19 May 2016 11:21:14 +0000 (13:21 +0200)
Fix import error

telemeta/forms/haystack_form.py
telemeta/views/boolean_search.py [new file with mode: 0644]
telemeta/views/search.py

index 46ef6a5ad14827faec443c433d7b3447c5c576fe..bce1c16333a02aadfa33a32356cf13fe5230e1fe 100644 (file)
@@ -27,6 +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 *
 
 class HaySearchForm(FacetedSearchForm):
 
@@ -156,12 +157,10 @@ class HayAdvanceForm(SearchForm):
     code = forms.CharField(required=False, label=(_('code')), widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'search'}))
 
     def filter_instru(self, query):
-
-        from telemeta.views.search import BooleanSearchView, Erreur
-        if isinstance(query, str):
+        if isinstance(query, str) or isinstance(query, unicode):
              try:
                  BooleanSearchView().is_correct_query(query)
-             except Erreur:
+             except TelemetaError:
                  return SQ(instruments__startswith=query)
 
         operateur = "ET"
@@ -255,17 +254,4 @@ class HayAdvanceForm(SearchForm):
             if self.cleaned_data.get('physical_format') != '':
                 sqs = sqs.filter(physical_format=self.cleaned_data['physical_format'])
 
-        return sqs
-
-
-def get_close_bracket(tab):
-    index = 0
-    par = 1
-    while par != 0 and index<len(tab):
-        if tab[index]=="(":
-            par += 1
-        elif tab[index]==")":
-            par -= 1
-        if par !=0:
-            index+= 1
-    return index if par == 0 else -1
\ No newline at end of file
+        return sqs
\ No newline at end of file
diff --git a/telemeta/views/boolean_search.py b/telemeta/views/boolean_search.py
new file mode 100644 (file)
index 0000000..9ed26b2
--- /dev/null
@@ -0,0 +1,70 @@
+from telemeta.core import TelemetaError
+import simplejson as json
+from django.http import HttpResponse
+from telemeta.forms.boolean_form import *
+from django.forms.formsets import formset_factory
+
+class BooleanSearchView(object):
+    form = formset_factory(BooleanSearch)
+
+    def get_boolean_query(self, request):
+        if request.method != 'GET':
+            return HttpResponse(json.dumps({'result': '[ERROR]:Not Request GET'}), content_type='application/json')
+
+        formset = self.form(request.GET)
+        if formset.is_valid():
+            query = ""
+            for i in range(len(formset.forms)):
+                formul = formset.forms[i]
+                if i != 0:
+                    query += formul.cleaned_data["boolean"] + " "
+                query += formul.cleaned_data["start_bracket"]
+                query += formul.cleaned_data["text_field"].strip() + " "
+                query += formul.cleaned_data["end_bracket"]
+            try:
+                self.is_correct_query(query.strip())
+            except TelemetaError as e:
+                return HttpResponse(json.dumps({'result': e.message}), content_type='application/json')
+            return HttpResponse(json.dumps({'result': query.strip()}), content_type='application/json')
+        else:
+            return HttpResponse(json.dumps({'result': '[ERROR]Field(s) missing'}), content_type='application/json')
+
+    def is_correct_query(self, query):
+        tab_query = query.split()
+        open_bracket = 0
+        boolean = False
+        for mot in tab_query:
+            if mot == ")":  #
+                if open_bracket == 0:
+                    raise TelemetaError("[ERROR]Open Bracket Is Missing !")
+                else:
+                    open_bracket -= 1
+                    boolean = False
+            elif mot == "ET" or mot == "OU":
+                if boolean:
+                    raise TelemetaError("[ERROR]Two boolean follow")
+                else:
+                    boolean = True
+            elif mot == "(":
+                open_bracket += 1
+            else:
+                boolean = False
+        if boolean:
+            raise TelemetaError("[ERROR]Boolean at the end of query")
+        elif open_bracket != 0:
+            raise TelemetaError("[ERROR]Close Bracket Is Missing")
+        else:
+            return True
+
+
+def get_close_bracket(tab):
+    index = 0
+    par = 1
+    while par != 0 and index<len(tab):
+        if tab[index]=="(":
+            par += 1
+        elif tab[index]==")":
+            par -= 1
+        if par !=0:
+            index+= 1
+    return index if par == 0 else -1
\ No newline at end of file
index 3fd5f495b4b2fd8518dc4325dbe6c470b7c9b766..735d1d07245327d55785991a6b271eee8bc4b3d2 100644 (file)
@@ -22,15 +22,10 @@ from haystack.query import SearchQuerySet, SQ
 from telemeta.models import *
 from telemeta.forms.haystack_form import *
 from saved_searches.views import SavedSearchView
-import simplejson as json
-from django.http import HttpResponse
-from telemeta.forms.boolean_form import *
-from django.forms.formsets import formset_factory
 import re
 import unicodedata
 
 
-
 class HaystackSearch(FacetedSearchView, SavedSearchView):
     search_key = 'quick'
 
@@ -207,61 +202,4 @@ def autocomplete(request):
     return HttpResponse(the_data, content_type='application/json')
 
 def escape_accent_and_lower(chaine):
-    return unicodedata.normalize('NFD', chaine).encode('ascii', 'ignore').lower()
-
-
-class BooleanSearchView(object):
-    form = formset_factory(BooleanSearch)
-
-    def get_boolean_query(self, request):
-        if request.method != 'GET':
-            return HttpResponse(json.dumps({'result': '[ERROR]:Not Request GET'}), content_type='application/json')
-
-        formset = self.form(request.GET)
-        if formset.is_valid():
-            query = ""
-            for i in range(len(formset.forms)):
-                formul = formset.forms[i]
-                if i != 0:
-                    query += formul.cleaned_data["boolean"] + " "
-                query += formul.cleaned_data["start_bracket"]
-                query += formul.cleaned_data["text_field"].strip() + " "
-                query += formul.cleaned_data["end_bracket"]
-            try:
-                self.is_correct_query(query.strip())
-            except Erreur as e:
-                return HttpResponse(json.dumps({'result': e.message}), content_type='application/json')
-            return HttpResponse(json.dumps({'result': query.strip()}), content_type='application/json')
-        else:
-            return HttpResponse(json.dumps({'result': '[ERROR]Field(s) missing'}), content_type='application/json')
-
-    def is_correct_query(self, query):
-        tab_query = query.split()
-        open_bracket = 0
-        boolean = False
-        for mot in tab_query:
-            if mot == ")":  #
-                if open_bracket == 0:
-                    raise Erreur("[ERROR]Open Bracket Is Missing !")
-                else:
-                    open_bracket -= 1
-                    boolean = False
-            elif mot == "ET" or mot == "OU":
-                if boolean:
-                    raise Erreur("[ERROR]Two boolean follow")
-                else:
-                    boolean = True
-            elif mot == "(":
-                open_bracket += 1
-            else:
-                boolean = False
-        if boolean:
-            raise Erreur("[ERROR]Boolean at the end of query")
-        elif open_bracket != 0:
-            raise Erreur("[ERROR]Close Bracket Is Missing")
-        else:
-            return True
-
-
-class Erreur(Exception):  #
-    pass  #
+    return unicodedata.normalize('NFD', chaine).encode('ascii', 'ignore').lower()
\ No newline at end of file