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 View File

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
 
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:

+ 12
- 0
searx/webapp.py View File

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'])
310
 def index():
322
 def index():