|
@@ -22,7 +22,7 @@ if __name__ == "__main__":
|
22
|
22
|
from os.path import realpath, dirname
|
23
|
23
|
path.append(realpath(dirname(realpath(__file__))+'/../'))
|
24
|
24
|
|
25
|
|
-from flask import Flask, request, flash, render_template, url_for, Response
|
|
25
|
+from flask import Flask, request, flash, render_template, url_for, Response, make_response
|
26
|
26
|
import ConfigParser
|
27
|
27
|
from os import getenv
|
28
|
28
|
from searx.engines import search, categories
|
|
@@ -54,7 +54,13 @@ def render(template_name, **kwargs):
|
54
|
54
|
global categories
|
55
|
55
|
kwargs['categories'] = categories.keys()
|
56
|
56
|
if not 'selected_categories' in kwargs:
|
57
|
|
- kwargs['selected_categories'] = ['general']
|
|
57
|
+ kwargs['selected_categories'] = []
|
|
58
|
+ cookie_categories = request.cookies.get('categories', '').split(',')
|
|
59
|
+ for ccateg in cookie_categories:
|
|
60
|
+ if ccateg in categories:
|
|
61
|
+ kwargs['selected_categories'].append(ccateg)
|
|
62
|
+ if not len(kwargs['selected_categories']):
|
|
63
|
+ kwargs['selected_categories'] = ['general']
|
58
|
64
|
return render_template(template_name, **kwargs)
|
59
|
65
|
|
60
|
66
|
@app.route('/', methods=['GET', 'POST'])
|
|
@@ -74,13 +80,20 @@ def index():
|
74
|
80
|
selected_categories.append(category)
|
75
|
81
|
selected_engines.extend(x.name for x in categories[category])
|
76
|
82
|
if not len(selected_engines):
|
77
|
|
- selected_engines = [x.name for x in categories['general']]
|
|
83
|
+ cookie_categories = request.cookies.get('categories', '').split(',')
|
|
84
|
+ for ccateg in cookie_categories:
|
|
85
|
+ if ccateg in categories:
|
|
86
|
+ selected_categories.append(ccateg)
|
|
87
|
+ selected_engines.extend(x.name for x in categories[ccateg])
|
78
|
88
|
query = request.form['q'].encode('utf-8')
|
79
|
89
|
results = search(query, request, selected_engines)
|
80
|
90
|
if request.form.get('format') == 'json':
|
81
|
91
|
# TODO HTTP headers
|
82
|
92
|
return json.dumps({'query': query, 'results': results})
|
83
|
|
- return render('results.html', results=results, q=query.decode('utf-8'), selected_categories=selected_categories)
|
|
93
|
+ template = render('results.html', results=results, q=query.decode('utf-8'), selected_categories=selected_categories)
|
|
94
|
+ resp = make_response(template)
|
|
95
|
+ resp.set_cookie('categories', ','.join(selected_categories))
|
|
96
|
+ return resp
|
84
|
97
|
return render('index.html')
|
85
|
98
|
|
86
|
99
|
@app.route('/favicon.ico', methods=['GET'])
|