on master help sign in
[mod] searx uses flask framework only in webapp.py. Make migration to another framework easier.
commit84a2c97a653d216690da0000f47582118709d2d7 authorAlexandre Flament <alex@al-f.net> dateMon 2 Jan 2017, 12:06 (10 years ago) parent3d8c9ba
4 files changed+21−24
searx/plugins/__init__.py+2−2 searx/search.py+5−4 searx/webapp.py+1−1 tests/unit/test_plugins.py+13−17
searx/plugins/__init__.py+2−2
@@ -63,9 +63,9 @@ class PluginStore():
6363 plugin.id = plugin.name.replace(' ', '_')
6464 self.plugins.append(plugin)
6565
66− def call(self, plugin_type, request, *args, **kwargs):
66+ def call(self, ordered_plugin_list, plugin_type, request, *args, **kwargs):
6767 ret = True
68− for plugin in request.user_plugins:
68+ for plugin in ordered_plugin_list:
6969 if hasattr(plugin, plugin_type):
7070 ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
7171 if not ret:
searx/search.py+5−4
@@ -395,19 +395,20 @@ class SearchWithPlugins(Search):
395395
396396 """Similar to the Search class but call the plugins."""
397397
398− def __init__(self, search_query, request):
398+ def __init__(self, search_query, ordered_plugin_list, request):
399399 super(SearchWithPlugins, self).__init__(search_query)
400+ self.ordered_plugin_list = ordered_plugin_list
400401 self.request = request
401402
402403 def search(self):
403− if plugins.call('pre_search', self.request, self):
404+ if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
404405 super(SearchWithPlugins, self).search()
405406
406− plugins.call('post_search', self.request, self)
407+ plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
407408
408409 results = self.result_container.get_ordered_results()
409410
410411 for result in results:
411− plugins.call('on_result', self.request, self, result)
412+ plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
412413
413414 return self.result_container
searx/webapp.py+1−1
@@ -419,7 +419,7 @@ def index():
419419 try:
420420 search_query = get_search_query_from_webapp(request.preferences, request.form)
421421 # search = Search(search_query) # without plugins
422− search = SearchWithPlugins(search_query, request)
422+ search = SearchWithPlugins(search_query, request.user_plugins, request)
423423 result_container = search.search()
424424 except:
425425 request.errors.append(gettext('search error'))
tests/unit/test_plugins.py+13−17
@@ -28,14 +28,12 @@ class PluginStoreTest(SearxTestCase):
2828 testplugin = plugins.Plugin()
2929 store.register(testplugin)
3030 setattr(testplugin, 'asdf', Mock())
31− request = Mock(user_plugins=[])
32− store.call('asdf', request, Mock())
31+ request = Mock()
32+ store.call([], 'asdf', request, Mock())
3333
3434 self.assertFalse(testplugin.asdf.called)
3535
36− request.user_plugins.append(testplugin)
37− store.call('asdf', request, Mock())
38−
36+ store.call([testplugin], 'asdf', request, Mock())
3937 self.assertTrue(testplugin.asdf.called)
4038
4139
@@ -48,42 +46,40 @@ class SelfIPTest(SearxTestCase):
4846 self.assertTrue(len(store.plugins) == 1)
4947
5048 # 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')
5350 request.headers.getlist.return_value = []
5451 search = get_search_mock(query='ip', pageno=1)
55− store.call('post_search', request, search)
52+ store.call(store.plugins, 'post_search', request, search)
5653 self.assertTrue('127.0.0.1' in search.result_container.answers)
5754
5855 search = get_search_mock(query='ip', pageno=2)
59− store.call('post_search', request, search)
56+ store.call(store.plugins, 'post_search', request, search)
6057 self.assertFalse('127.0.0.1' in search.result_container.answers)
6158
6259 # User agent test
63− request = Mock(user_plugins=store.plugins,
64− user_agent='Mock')
60+ request = Mock(user_agent='Mock')
6561 request.headers.getlist.return_value = []
6662
6763 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)
6965 self.assertTrue('Mock' in search.result_container.answers)
7066
7167 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)
7369 self.assertFalse('Mock' in search.result_container.answers)
7470
7571 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)
7773 self.assertTrue('Mock' in search.result_container.answers)
7874
7975 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)
8177 self.assertFalse('Mock' in search.result_container.answers)
8278
8379 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)
8581 self.assertTrue('Mock' in search.result_container.answers)
8682
8783 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)
8985 self.assertFalse('Mock' in search.result_container.answers)