summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
authordalf <alex@al-f.net>2014-10-01 22:25:11 +0200
committerdalf <alex@al-f.net>2014-10-01 22:25:11 +0200
commit829c75897082b74b5301af6d6a27dc0cf9f5e7d6 (patch)
tree6e8bbcde1ec3ce0874306d932d8aef7c48f0cfdf /searx/webapp.py
parent0a71525ab6d4fe4cbc4b33b4653bdb39ae4d55e9 (diff)
parentfce6fb2fa8f1b95d36b8043e0cea160b2f9fc633 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'searx/webapp.py')
-rw-r--r--searx/webapp.py30
1 files changed, 27 insertions, 3 deletions
diff --git a/searx/webapp.py b/searx/webapp.py
index d0212169c..74f8fad7e 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -47,6 +47,7 @@ from searx.utils import (
from searx.https_rewrite import https_rules
from searx.languages import language_codes
from searx.search import Search
+from searx.query import Query
from searx.autocomplete import backends as autocomplete_backends
@@ -310,23 +311,46 @@ def autocompleter():
"""Return autocompleter results"""
request_data = {}
+ # select request method
if request.method == 'POST':
request_data = request.form
else:
request_data = request.args
- query = request_data.get('q', '').encode('utf-8')
+ # set blocked engines
+ if request.cookies.get('blocked_engines'):
+ blocked_engines = request.cookies['blocked_engines'].split(',') # noqa
+ else:
+ blocked_engines = []
+
+ # parse query
+ query = Query(request_data.get('q', '').encode('utf-8'), blocked_engines)
+ query.parse_query()
- if not query:
+ # check if search query is set
+ if not query.getSearchQuery():
return
+ # run autocompleter
completer = autocomplete_backends.get(request.cookies.get('autocomplete'))
+ # check if valid autocompleter is selected
if not completer:
return
- results = completer(query)
+ # run autocompletion
+ raw_results = completer(query.getSearchQuery())
+
+ # parse results (write :language and !engine back to result string)
+ results = []
+ for result in raw_results:
+ result_query = query
+ result_query.changeSearchQuery(result)
+
+ # add parsed result
+ results.append(result_query.getFullQuery())
+ # return autocompleter results
if request_data.get('format') == 'x-suggestions':
return Response(json.dumps([query, results]),
mimetype='application/json')