|
@@ -28,7 +28,6 @@ import os
|
28
|
28
|
import hashlib
|
29
|
29
|
|
30
|
30
|
from datetime import datetime, timedelta
|
31
|
|
-from itertools import chain
|
32
|
31
|
from urllib import urlencode
|
33
|
32
|
from flask import (
|
34
|
33
|
Flask, request, render_template, url_for, Response, make_response,
|
|
@@ -234,11 +233,9 @@ def render(template_name, override_theme=None, **kwargs):
|
234
|
233
|
if autocomplete not in autocomplete_backends:
|
235
|
234
|
autocomplete = None
|
236
|
235
|
|
237
|
|
- nonblocked_categories = (engines[e].categories
|
238
|
|
- for e in engines
|
239
|
|
- if e not in blocked_engines)
|
240
|
|
-
|
241
|
|
- nonblocked_categories = set(chain.from_iterable(nonblocked_categories))
|
|
236
|
+ nonblocked_categories = set(category for engine_name in engines
|
|
237
|
+ for category in engines[engine_name].categories
|
|
238
|
+ if (engine_name, category) not in blocked_engines)
|
242
|
239
|
|
243
|
240
|
if 'categories' not in kwargs:
|
244
|
241
|
kwargs['categories'] = ['general']
|
|
@@ -492,21 +489,19 @@ def preferences():
|
492
|
489
|
elif pd_name == 'method':
|
493
|
490
|
method = pd
|
494
|
491
|
elif pd_name.startswith('engine_'):
|
495
|
|
- engine_name = pd_name.replace('engine_', '', 1)
|
496
|
|
- if engine_name in engines:
|
497
|
|
- blocked_engines.append(engine_name)
|
|
492
|
+ if pd_name.find('__') > -1:
|
|
493
|
+ engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1)
|
|
494
|
+ if engine_name in engines and category in engines[engine_name].categories:
|
|
495
|
+ blocked_engines.append((engine_name, category))
|
498
|
496
|
elif pd_name == 'theme':
|
499
|
497
|
theme = pd if pd in themes else default_theme
|
500
|
498
|
else:
|
501
|
499
|
resp.set_cookie(pd_name, pd, max_age=cookie_max_age)
|
502
|
500
|
|
503
|
|
- user_blocked_engines = request.cookies.get('blocked_engines', '').split(',') # noqa
|
504
|
|
-
|
505
|
|
- if sorted(blocked_engines) != sorted(user_blocked_engines):
|
506
|
|
- resp.set_cookie(
|
507
|
|
- 'blocked_engines', ','.join(blocked_engines),
|
508
|
|
- max_age=cookie_max_age
|
509
|
|
- )
|
|
501
|
+ resp.set_cookie(
|
|
502
|
+ 'blocked_engines', ','.join('__'.join(e) for e in blocked_engines),
|
|
503
|
+ max_age=cookie_max_age
|
|
504
|
+ )
|
510
|
505
|
|
511
|
506
|
if locale:
|
512
|
507
|
resp.set_cookie(
|