]> git.parisson.com Git - telemeta.git/commitdiff
ajout autocompletion
authorMathieu <mathieu.boye28@gmail.com>
Sun, 3 Apr 2016 23:37:36 +0000 (01:37 +0200)
committerMathieu <mathieu.boye28@gmail.com>
Sun, 3 Apr 2016 23:37:36 +0000 (01:37 +0200)
telemeta/templates/search/advanceSearch.html
telemeta/urls.py
telemeta/views/search.py

index 5285222ca1be3948090638bd9056a44b97cee88a..b0df9c6e6235c1f04d4bb6ed3b7632f4bf39e1c9 100644 (file)
             }).selectmenu("menuWidget").addClass("overflow");
 
         });
+
+</script>
+    <script>
+var liste = [
+    "Draggable",
+    "Droppable",
+    "Resizable",
+    "Selectable",
+    "Sortable"
+];
+$(function(){
+    $('#id_q[type="search"], #id_code, #id_location').each(function(){
+        var self = this;
+        $(this).autocomplete({
+            source : function(requete, reponse) {
+                $.ajax({
+                    url: '/search/autocomplete/',
+                    dataType: 'json',
+                     data: {
+                        q: $(self).val(),
+                        attr: $(self).attr('name')
+                     },
+                success: function (donnee) {
+                        reponse(donnee.results);
+                    }
+             });
+        }
+    });
+    });
+});
     </script>
 {% endblock %}
index 72f727b3a9ff55bb728883194ff9a284a4a4573f..fd95be62615ac3f0cc20e123492c431935b3184d 100644 (file)
@@ -126,6 +126,7 @@ urlpatterns = patterns('',
     # search
     # url(r'^archives/$', home_view.search, name="telemeta-archives"),
     url(r'^search/$', HaystackSearch(), name='haystack_search'),
+    url(r'^search/autocomplete/$', autocomplete),
     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'),
index 89ada69c2e3d052c131d3f2c319aab337518be5a..3ec7a79ebe1baa5c95a429f5c1bee86a17cdcf85 100644 (file)
 
 
 from haystack.views import *
-from haystack.query import SearchQuerySet
+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
 
 
 class HaystackSearch(FacetedSearchView, SavedSearchView):
@@ -111,10 +113,6 @@ class HaystackSearch(FacetedSearchView, SavedSearchView):
         extra['results_page'] = self.results_per_page
         return extra
 
-    #def auto_complete(request):
-        #content = SearchQuerySet().autocomplete(content_auto=request.POST.get('seatch_text', ''))
-        #return render_to_response('', {'content' : content])
-
 
 class HaystackAdvanceSearch(SavedSearchView):
 
@@ -162,3 +160,25 @@ class HaystackAdvanceSearch(SavedSearchView):
 
         extra['results_page'] = self.results_per_page
         return extra
+
+def autocomplete(request):
+    sqs = SearchQuerySet().load_all()
+    print(type)
+    if request.GET.get('attr', '') == "q":
+        sqs = sqs.filter(title__contains=request.GET.get('q', ''))[:5]
+        suggestions = [result.title for result in sqs]
+    elif request.GET.get('attr', '') == "location":
+        sqs = sqs.filter(location_principal__contains=request.GET.get('q', ''))[:5]
+        suggestions = [result.location_principal for result in sqs]
+    elif request.GET.get('attr', '') == "code":
+        sqs = sqs.filter(code__contains=request.GET.get('q', ''))[:5]
+        suggestions = [result.code for result in sqs]
+    else:
+        suggestions = []
+
+    suggestions = list(set(suggestions))
+
+    the_data = json.dumps({
+        'results': suggestions
+    })
+    return HttpResponse(the_data, content_type='application/json')