on master help sign in
[enh] per user plugin switch
cae22bfAdam Tauber
searx/plugins/__init__.py+2−2
@@ -20,7 +20,7 @@ class PluginStore():
20 self.plugins = []
20 self.plugins = []
21
21
22 def __iter__(self):
22 def __iter__(self):
23− for plugin in plugins:
23+ for plugin in self.plugins:
24 yield plugin
24 yield plugin
25
25
26 def register(self, *plugins):
26 def register(self, *plugins):
@@ -33,7 +33,7 @@ class PluginStore():
33
33
34 def call(self, plugin_type, request, *args, **kwargs):
34 def call(self, plugin_type, request, *args, **kwargs):
35 ret = True
35 ret = True
36− for plugin in self.plugins:
36+ for plugin in request.user_plugins:
37 if hasattr(plugin, plugin_type):
37 if hasattr(plugin, plugin_type):
38 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
38 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
39 if not ret:
39 if not ret:
searx/webapp.py+12
@@ -305,6 +305,18 @@ def render(template_name, override_theme=None, **kwargs):
305 '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
305 '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
306
306
307
307
308+@app.before_request
309+def pre_request():
310+
311+ request.user_plugins = []
312+ allowed_plugins = request.cookies.get('allowed_plugins', '').split(',')
313+ disabled_plugins = request.cookies.get('disabled_plugins', '').split(',')
314+ for plugin in plugins:
315+ if ((plugin.default_on and plugin.name not in disabled_plugins)
316+ or plugin.name in allowed_plugins):
317+ request.user_plugins.append(plugin)
318+
319+
308@app.route('/search', methods=['GET', 'POST'])
320@app.route('/search', methods=['GET', 'POST'])
309@app.route('/', methods=['GET', 'POST'])
321@app.route('/', methods=['GET', 'POST'])
310def index():
322def index():