diff options
| author | dalf <alex@al-f.net> | 2014-10-01 22:25:11 +0200 |
|---|---|---|
| committer | dalf <alex@al-f.net> | 2014-10-01 22:25:11 +0200 |
| commit | 829c75897082b74b5301af6d6a27dc0cf9f5e7d6 (patch) | |
| tree | 6e8bbcde1ec3ce0874306d932d8aef7c48f0cfdf /searx/webapp.py | |
| parent | 0a71525ab6d4fe4cbc4b33b4653bdb39ae4d55e9 (diff) | |
| parent | fce6fb2fa8f1b95d36b8043e0cea160b2f9fc633 (diff) | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'searx/webapp.py')
| -rw-r--r-- | searx/webapp.py | 30 |
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') |