@@ -22,7 +22,7 @@ if __name__ == "__main__":
2222 from os.path import realpath, dirname
2323 path.append(realpath(dirname(realpath(__file__))+'/../'))
2424
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
2626import ConfigParser
2727from os import getenv
2828from searx.engines import search, categories
@@ -54,7 +54,13 @@ def render(template_name, **kwargs):
5454 global categories
5555 kwargs['categories'] = categories.keys()
5656 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']
5864 return render_template(template_name, **kwargs)
5965
6066@app.route('/', methods=['GET', 'POST'])
@@ -74,13 +80,20 @@ def index():
7480 selected_categories.append(category)
7581 selected_engines.extend(x.name for x in categories[category])
7682 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])
7888 query = request.form['q'].encode('utf-8')
7989 results = search(query, request, selected_engines)
8090 if request.form.get('format') == 'json':
8191 # TODO HTTP headers
8292 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
8497 return render('index.html')
8598
8699@app.route('/favicon.ico', methods=['GET'])