@@ -26,6 +26,7 @@ import json
26import cStringIO
26import cStringIO
29+from itertools import chain
29from flask import (
30from flask import (
30 Flask, request, render_template, url_for, Response, make_response,
31 Flask, request, render_template, url_for, Response, make_response,
31 redirect, send_from_directory
32 redirect, send_from_directory
@@ -86,10 +87,17 @@ def get_base_url():
88def render(template_name, **kwargs):
89def render(template_name, **kwargs):
89− global categories
90+ blocked_engines = request.cookies.get('blocked_engines', '').split(',')
91+ nonblocked_categories = (engines[e].categories
93+ if e not in blocked_engines)
94+ nonblocked_categories = set(chain.from_iterable(nonblocked_categories))
95+ if not 'categories' in kwargs:
90− kwargs['categories'] = ['general']
96+ kwargs['categories'] = ['general']
91− kwargs['categories'].extend(x for x in
97+ kwargs['categories'].extend(x for x in
92− sorted(categories.keys()) if x != 'general')
98+ sorted(categories.keys())
100+ and x in nonblocked_categories)
93 if not 'selected_categories' in kwargs:
101 if not 'selected_categories' in kwargs:
94 kwargs['selected_categories'] = []
102 kwargs['selected_categories'] = []
95 cookie_categories = request.cookies.get('categories', '').split(',')
103 cookie_categories = request.cookies.get('categories', '').split(',')