@@ -242,17 +242,6 @@ def about():
242 return render('about.html')
242 return render('about.html')
245−@app.route('/engines', methods=['GET'])
247− """Render engines page.
249− List of all supported engines.
251− return render('engines.html',
252− categs=categories.items(),
253− shortcuts={y: x for x, y in engine_shortcuts.items()})
256@app.route('/preferences', methods=['GET', 'POST'])
245@app.route('/preferences', methods=['GET', 'POST'])
257def preferences():
246def preferences():
258 """Render preferences page.
247 """Render preferences page.
@@ -264,7 +253,11 @@ def preferences():
264 and request.cookies['language'] in (x[0] for x in language_codes):
253 and request.cookies['language'] in (x[0] for x in language_codes):
265 lang = request.cookies['language']
254 lang = request.cookies['language']
256+ blocked_engines = []
267− if request.method == 'POST':
258+ if request.method == 'GET':
259+ blocked_engines = request.cookies.get('blocked_engines', '').split(',')
268 selected_categories = []
261 selected_categories = []
269 locale = None
262 locale = None
270 for pd_name, pd in request.form.items():
263 for pd_name, pd in request.form.items():
@@ -278,10 +271,24 @@ def preferences():
278 elif pd_name == 'language' and (pd == 'all' or
271 elif pd_name == 'language' and (pd == 'all' or
279 pd in (x[0] for
272 pd in (x[0] for
280 x in language_codes)):
273 x in language_codes)):
281 lang = pd
275 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)
283 resp = make_response(redirect('/'))
281 resp = make_response(redirect('/'))
283+ user_blocked_engines = request.cookies.get('blocked_engines', '').split(',') # noqa
285+ if sorted(blocked_engines) != sorted(user_blocked_engines):
286+ # cookie max age: 4 weeks
288+ 'blocked_engines', ','.join(blocked_engines),
289+ max_age=60 * 60 * 24 * 7 * 4
285 if locale:
292 if locale:
286 # cookie max age: 4 weeks
293 # cookie max age: 4 weeks
287 resp.set_cookie(
294 resp.set_cookie(
@@ -307,7 +314,10 @@ def preferences():
307 locales=settings['locales'],
314 locales=settings['locales'],
308 current_locale=get_locale(),
315 current_locale=get_locale(),
309 current_language=lang or 'all',
316 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()})
313@app.route('/stats', methods=['GET'])
323@app.route('/stats', methods=['GET'])