소스 검색

[enh] per user plugin switch

Adam Tauber 10 년 전
부모
커밋
cae22bfc76
2개의 변경된 파일14개의 추가작업 그리고 2개의 파일을 삭제
  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():
20 20
         self.plugins = []
21 21
 
22 22
     def __iter__(self):
23
-        for plugin in plugins:
23
+        for plugin in self.plugins:
24 24
             yield plugin
25 25
 
26 26
     def register(self, *plugins):
@@ -33,7 +33,7 @@ class PluginStore():
33 33
 
34 34
     def call(self, plugin_type, request, *args, **kwargs):
35 35
         ret = True
36
-        for plugin in self.plugins:
36
+        for plugin in request.user_plugins:
37 37
             if hasattr(plugin, plugin_type):
38 38
                 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
39 39
                 if not ret:

+ 12
- 0
searx/webapp.py 파일 보기

@@ -305,6 +305,18 @@ def render(template_name, override_theme=None, **kwargs):
305 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 320
 @app.route('/search', methods=['GET', 'POST'])
309 321
 @app.route('/', methods=['GET', 'POST'])
310 322
 def index():