浏览代码

Merge pull request #804 from dalf/flask_perimeter

[mod] searx uses flask framework only in webapp.py
Adam Tauber 8 年前
父节点
当前提交
3ecde5bc3a
共有 4 个文件被更改,包括 21 次插入24 次删除
  1. 2
    2
      searx/plugins/__init__.py
  2. 5
    4
      searx/search.py
  3. 1
    1
      searx/webapp.py
  4. 13
    17
      tests/unit/test_plugins.py

+ 2
- 2
searx/plugins/__init__.py 查看文件

63
             plugin.id = plugin.name.replace(' ', '_')
63
             plugin.id = plugin.name.replace(' ', '_')
64
             self.plugins.append(plugin)
64
             self.plugins.append(plugin)
65
 
65
 
66
-    def call(self, plugin_type, request, *args, **kwargs):
66
+    def call(self, ordered_plugin_list, plugin_type, request, *args, **kwargs):
67
         ret = True
67
         ret = True
68
-        for plugin in request.user_plugins:
68
+        for plugin in ordered_plugin_list:
69
             if hasattr(plugin, plugin_type):
69
             if hasattr(plugin, plugin_type):
70
                 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
70
                 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
71
                 if not ret:
71
                 if not ret:

+ 5
- 4
searx/search.py 查看文件

414
 
414
 
415
     """Similar to the Search class but call the plugins."""
415
     """Similar to the Search class but call the plugins."""
416
 
416
 
417
-    def __init__(self, search_query, request):
417
+    def __init__(self, search_query, ordered_plugin_list, request):
418
         super(SearchWithPlugins, self).__init__(search_query)
418
         super(SearchWithPlugins, self).__init__(search_query)
419
+        self.ordered_plugin_list = ordered_plugin_list
419
         self.request = request
420
         self.request = request
420
 
421
 
421
     def search(self):
422
     def search(self):
422
-        if plugins.call('pre_search', self.request, self):
423
+        if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
423
             super(SearchWithPlugins, self).search()
424
             super(SearchWithPlugins, self).search()
424
 
425
 
425
-        plugins.call('post_search', self.request, self)
426
+        plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
426
 
427
 
427
         results = self.result_container.get_ordered_results()
428
         results = self.result_container.get_ordered_results()
428
 
429
 
429
         for result in results:
430
         for result in results:
430
-            plugins.call('on_result', self.request, self, result)
431
+            plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
431
 
432
 
432
         return self.result_container
433
         return self.result_container

+ 1
- 1
searx/webapp.py 查看文件

456
     try:
456
     try:
457
         search_query = get_search_query_from_webapp(request.preferences, request.form)
457
         search_query = get_search_query_from_webapp(request.preferences, request.form)
458
         # search = Search(search_query) #  without plugins
458
         # search = Search(search_query) #  without plugins
459
-        search = SearchWithPlugins(search_query, request)
459
+        search = SearchWithPlugins(search_query, request.user_plugins, request)
460
         result_container = search.search()
460
         result_container = search.search()
461
     except Exception as e:
461
     except Exception as e:
462
         # log exception
462
         # log exception

+ 13
- 17
tests/unit/test_plugins.py 查看文件

28
         testplugin = plugins.Plugin()
28
         testplugin = plugins.Plugin()
29
         store.register(testplugin)
29
         store.register(testplugin)
30
         setattr(testplugin, 'asdf', Mock())
30
         setattr(testplugin, 'asdf', Mock())
31
-        request = Mock(user_plugins=[])
32
-        store.call('asdf', request, Mock())
31
+        request = Mock()
32
+        store.call([], 'asdf', request, Mock())
33
 
33
 
34
         self.assertFalse(testplugin.asdf.called)
34
         self.assertFalse(testplugin.asdf.called)
35
 
35
 
36
-        request.user_plugins.append(testplugin)
37
-        store.call('asdf', request, Mock())
38
-
36
+        store.call([testplugin], 'asdf', request, Mock())
39
         self.assertTrue(testplugin.asdf.called)
37
         self.assertTrue(testplugin.asdf.called)
40
 
38
 
41
 
39
 
48
         self.assertTrue(len(store.plugins) == 1)
46
         self.assertTrue(len(store.plugins) == 1)
49
 
47
 
50
         # IP test
48
         # IP test
51
-        request = Mock(user_plugins=store.plugins,
52
-                       remote_addr='127.0.0.1')
49
+        request = Mock(remote_addr='127.0.0.1')
53
         request.headers.getlist.return_value = []
50
         request.headers.getlist.return_value = []
54
         search = get_search_mock(query='ip', pageno=1)
51
         search = get_search_mock(query='ip', pageno=1)
55
-        store.call('post_search', request, search)
52
+        store.call(store.plugins, 'post_search', request, search)
56
         self.assertTrue('127.0.0.1' in search.result_container.answers)
53
         self.assertTrue('127.0.0.1' in search.result_container.answers)
57
 
54
 
58
         search = get_search_mock(query='ip', pageno=2)
55
         search = get_search_mock(query='ip', pageno=2)
59
-        store.call('post_search', request, search)
56
+        store.call(store.plugins, 'post_search', request, search)
60
         self.assertFalse('127.0.0.1' in search.result_container.answers)
57
         self.assertFalse('127.0.0.1' in search.result_container.answers)
61
 
58
 
62
         # User agent test
59
         # User agent test
63
-        request = Mock(user_plugins=store.plugins,
64
-                       user_agent='Mock')
60
+        request = Mock(user_agent='Mock')
65
         request.headers.getlist.return_value = []
61
         request.headers.getlist.return_value = []
66
 
62
 
67
         search = get_search_mock(query='user-agent', pageno=1)
63
         search = get_search_mock(query='user-agent', pageno=1)
68
-        store.call('post_search', request, search)
64
+        store.call(store.plugins, 'post_search', request, search)
69
         self.assertTrue('Mock' in search.result_container.answers)
65
         self.assertTrue('Mock' in search.result_container.answers)
70
 
66
 
71
         search = get_search_mock(query='user-agent', pageno=2)
67
         search = get_search_mock(query='user-agent', pageno=2)
72
-        store.call('post_search', request, search)
68
+        store.call(store.plugins, 'post_search', request, search)
73
         self.assertFalse('Mock' in search.result_container.answers)
69
         self.assertFalse('Mock' in search.result_container.answers)
74
 
70
 
75
         search = get_search_mock(query='user-agent', pageno=1)
71
         search = get_search_mock(query='user-agent', pageno=1)
76
-        store.call('post_search', request, search)
72
+        store.call(store.plugins, 'post_search', request, search)
77
         self.assertTrue('Mock' in search.result_container.answers)
73
         self.assertTrue('Mock' in search.result_container.answers)
78
 
74
 
79
         search = get_search_mock(query='user-agent', pageno=2)
75
         search = get_search_mock(query='user-agent', pageno=2)
80
-        store.call('post_search', request, search)
76
+        store.call(store.plugins, 'post_search', request, search)
81
         self.assertFalse('Mock' in search.result_container.answers)
77
         self.assertFalse('Mock' in search.result_container.answers)
82
 
78
 
83
         search = get_search_mock(query='What is my User-Agent?', pageno=1)
79
         search = get_search_mock(query='What is my User-Agent?', pageno=1)
84
-        store.call('post_search', request, search)
80
+        store.call(store.plugins, 'post_search', request, search)
85
         self.assertTrue('Mock' in search.result_container.answers)
81
         self.assertTrue('Mock' in search.result_container.answers)
86
 
82
 
87
         search = get_search_mock(query='What is my User-Agent?', pageno=2)
83
         search = get_search_mock(query='What is my User-Agent?', pageno=2)
88
-        store.call('post_search', request, search)
84
+        store.call(store.plugins, 'post_search', request, search)
89
         self.assertFalse('Mock' in search.result_container.answers)
85
         self.assertFalse('Mock' in search.result_container.answers)