Browse Source

[enh] per user plugin switch

Adam Tauber 10 years ago
parent
commit
cae22bfc76
2 changed files with 14 additions and 2 deletions
  1. 2 2
      searx/plugins/__init__.py
  2. 12 0
      searx/webapp.py

+ 2 - 2
searx/plugins/__init__.py

@@ -20,7 +20,7 @@ class PluginStore():
         self.plugins = []
 
     def __iter__(self):
-        for plugin in plugins:
+        for plugin in self.plugins:
             yield plugin
 
     def register(self, *plugins):
@@ -33,7 +33,7 @@ class PluginStore():
 
     def call(self, plugin_type, request, *args, **kwargs):
         ret = True
-        for plugin in self.plugins:
+        for plugin in request.user_plugins:
             if hasattr(plugin, plugin_type):
                 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
                 if not ret:

+ 12 - 0
searx/webapp.py

@@ -305,6 +305,18 @@ def render(template_name, override_theme=None, **kwargs):
         '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
 
 
+@app.before_request
+def pre_request():
+
+    request.user_plugins = []
+    allowed_plugins = request.cookies.get('allowed_plugins', '').split(',')
+    disabled_plugins = request.cookies.get('disabled_plugins', '').split(',')
+    for plugin in plugins:
+        if ((plugin.default_on and plugin.name not in disabled_plugins)
+                or plugin.name in allowed_plugins):
+            request.user_plugins.append(plugin)
+
+
 @app.route('/search', methods=['GET', 'POST'])
 @app.route('/', methods=['GET', 'POST'])
 def index():