|  | @@ -242,17 +242,6 @@ def about():
 | 
	
		
			
			| 242 | 242 |      return render('about.html')
 | 
	
		
			
			| 243 | 243 |  
 | 
	
		
			
			| 244 | 244 |  
 | 
	
		
			
			| 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 |  | -
 | 
	
		
			
			| 256 | 245 |  @app.route('/preferences', methods=['GET', 'POST'])
 | 
	
		
			
			| 257 | 246 |  def preferences():
 | 
	
		
			
			| 258 | 247 |      """Render preferences page.
 | 
	
	
		
			
			|  | @@ -264,7 +253,11 @@ def preferences():
 | 
	
		
			
			| 264 | 253 |         and request.cookies['language'] in (x[0] for x in language_codes):
 | 
	
		
			
			| 265 | 254 |          lang = request.cookies['language']
 | 
	
		
			
			| 266 | 255 |  
 | 
	
		
			
			| 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:
 | 
	
		
			
			| 268 | 261 |          selected_categories = []
 | 
	
		
			
			| 269 | 262 |          locale = None
 | 
	
		
			
			| 270 | 263 |          for pd_name, pd in request.form.items():
 | 
	
	
		
			
			|  | @@ -278,10 +271,24 @@ def preferences():
 | 
	
		
			
			| 278 | 271 |              elif pd_name == 'language' and (pd == 'all' or
 | 
	
		
			
			| 279 | 272 |                                              pd in (x[0] for
 | 
	
		
			
			| 280 | 273 |                                                     x in language_codes)):
 | 
	
		
			
			|  | 274 | +                locale = pd
 | 
	
		
			
			| 281 | 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)
 | 
	
		
			
			| 282 | 280 |  
 | 
	
		
			
			| 283 | 281 |          resp = make_response(redirect('/'))
 | 
	
		
			
			| 284 | 282 |  
 | 
	
		
			
			|  | 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 | +
 | 
	
		
			
			| 285 | 292 |          if locale:
 | 
	
		
			
			| 286 | 293 |              # cookie max age: 4 weeks
 | 
	
		
			
			| 287 | 294 |              resp.set_cookie(
 | 
	
	
		
			
			|  | @@ -307,7 +314,10 @@ def preferences():
 | 
	
		
			
			| 307 | 314 |                    locales=settings['locales'],
 | 
	
		
			
			| 308 | 315 |                    current_locale=get_locale(),
 | 
	
		
			
			| 309 | 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()})
 | 
	
		
			
			| 311 | 321 |  
 | 
	
		
			
			| 312 | 322 |  
 | 
	
		
			
			| 313 | 323 |  @app.route('/stats', methods=['GET'])
 |