From: Mathieu Date: Sun, 3 Apr 2016 23:37:36 +0000 (+0200) Subject: ajout autocompletion X-Git-Tag: 1.6.2^2~15^2~10^2~27 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=3de31e4a4ebd77fda8966d777057dc13e7237830;p=telemeta.git ajout autocompletion --- diff --git a/telemeta/templates/search/advanceSearch.html b/telemeta/templates/search/advanceSearch.html index 5285222c..b0df9c6e 100644 --- a/telemeta/templates/search/advanceSearch.html +++ b/telemeta/templates/search/advanceSearch.html @@ -247,5 +247,35 @@ }).selectmenu("menuWidget").addClass("overflow"); }); + + + {% endblock %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 72f727b3..fd95be62 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -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[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'), diff --git a/telemeta/views/search.py b/telemeta/views/search.py index 89ada69c..3ec7a79e 100644 --- a/telemeta/views/search.py +++ b/telemeta/views/search.py @@ -19,10 +19,12 @@ 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')