@@ -242,17 +242,6 @@ def about():
242242 return render('about.html')
243243
244244
245−@app.route('/engines', methods=['GET'])
246−def list_engines():
247− """Render engines page.
248−
249− List of all supported engines.
250− """
251− return render('engines.html',
252− categs=categories.items(),
253− shortcuts={y: x for x, y in engine_shortcuts.items()})
254−
255−
256245@app.route('/preferences', methods=['GET', 'POST'])
257246def preferences():
258247 """Render preferences page.
@@ -264,7 +253,11 @@ def preferences():
264253 and request.cookies['language'] in (x[0] for x in language_codes):
265254 lang = request.cookies['language']
266255
267− if request.method == 'POST':
256+ blocked_engines = []
257+
258+ if request.method == 'GET':
259+ blocked_engines = request.cookies.get('blocked_engines', '').split(',')
260+ else:
268261 selected_categories = []
269262 locale = None
270263 for pd_name, pd in request.form.items():
@@ -278,10 +271,24 @@ def preferences():
278271 elif pd_name == 'language' and (pd == 'all' or
279272 pd in (x[0] for
280273 x in language_codes)):
274+ locale = pd
281275 lang = pd
276+ elif pd_name.startswith('engine_'):
277+ engine_name = pd_name.replace('engine_', '', 1)
278+ if engine_name in engines:
279+ blocked_engines.append(engine_name)
282280
283281 resp = make_response(redirect('/'))
284282
283+ user_blocked_engines = request.cookies.get('blocked_engines', '').split(',') # noqa
284+
285+ if sorted(blocked_engines) != sorted(user_blocked_engines):
286+ # cookie max age: 4 weeks
287+ resp.set_cookie(
288+ 'blocked_engines', ','.join(blocked_engines),
289+ max_age=60 * 60 * 24 * 7 * 4
290+ )
291+
285292 if locale:
286293 # cookie max age: 4 weeks
287294 resp.set_cookie(
@@ -307,7 +314,10 @@ def preferences():
307314 locales=settings['locales'],
308315 current_locale=get_locale(),
309316 current_language=lang or 'all',
310− language_codes=language_codes)
317+ language_codes=language_codes,
318+ categs=categories.items(),
319+ blocked_engines=blocked_engines,
320+ shortcuts={y: x for x, y in engine_shortcuts.items()})
311321
312322
313323@app.route('/stats', methods=['GET'])