@@ -26,6 +26,7 @@ import json
2626import cStringIO
2727import os
2828
29+from itertools import chain
2930from flask import (
3031 Flask, request, render_template, url_for, Response, make_response,
3132 redirect, send_from_directory
@@ -86,10 +87,17 @@ def get_base_url():
8687
8788
8889def render(template_name, **kwargs):
89− global categories
90− kwargs['categories'] = ['general']
91− kwargs['categories'].extend(x for x in
92− sorted(categories.keys()) if x != 'general')
90+ blocked_engines = request.cookies.get('blocked_engines', '').split(',')
91+ nonblocked_categories = (engines[e].categories
92+ for e in engines
93+ if e not in blocked_engines)
94+ nonblocked_categories = set(chain.from_iterable(nonblocked_categories))
95+ if not 'categories' in kwargs:
96+ kwargs['categories'] = ['general']
97+ kwargs['categories'].extend(x for x in
98+ sorted(categories.keys())
99+ if x != 'general'\
100+ and x in nonblocked_categories)
93101 if not 'selected_categories' in kwargs:
94102 kwargs['selected_categories'] = []
95103 cookie_categories = request.cookies.get('categories', '').split(',')