diff options
author | Alexandre Flament <alex@al-f.net> | 2017-01-02 12:06:04 +0100 |
---|---|---|
committer | Alexandre Flament <alex@al-f.net> | 2017-01-02 12:06:04 +0100 |
commit | 84a2c97a653d216690da0000f47582118709d2d7 (patch) | |
tree | c735600400102ff5d96477aaaf1809dfd987be01 | |
parent | 3d8c9bab9618b4d0cceadfac888af4560f7d3c9b (diff) | |
download | searxng-84a2c97a653d216690da0000f47582118709d2d7.tar.gz searxng-84a2c97a653d216690da0000f47582118709d2d7.zip |
[mod] searx uses flask framework only in webapp.py. Make migration to another framework easier.
-rw-r--r-- | searx/plugins/__init__.py | 4 | ||||
-rw-r--r-- | searx/search.py | 9 | ||||
-rw-r--r-- | searx/webapp.py | 2 | ||||
-rw-r--r-- | tests/unit/test_plugins.py | 30 |
4 files changed, 21 insertions, 24 deletions
diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py index 768a510af..011d36260 100644 --- a/searx/plugins/__init__.py +++ b/searx/plugins/__init__.py @@ -63,9 +63,9 @@ class PluginStore(): plugin.id = plugin.name.replace(' ', '_') self.plugins.append(plugin) - def call(self, plugin_type, request, *args, **kwargs): + def call(self, ordered_plugin_list, plugin_type, request, *args, **kwargs): ret = True - for plugin in request.user_plugins: + for plugin in ordered_plugin_list: if hasattr(plugin, plugin_type): ret = getattr(plugin, plugin_type)(request, *args, **kwargs) if not ret: diff --git a/searx/search.py b/searx/search.py index e0f0cfd6a..0159d45b8 100644 --- a/searx/search.py +++ b/searx/search.py @@ -395,19 +395,20 @@ class SearchWithPlugins(Search): """Similar to the Search class but call the plugins.""" - def __init__(self, search_query, request): + def __init__(self, search_query, ordered_plugin_list, request): super(SearchWithPlugins, self).__init__(search_query) + self.ordered_plugin_list = ordered_plugin_list self.request = request def search(self): - if plugins.call('pre_search', self.request, self): + if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self): super(SearchWithPlugins, self).search() - plugins.call('post_search', self.request, self) + plugins.call(self.ordered_plugin_list, 'post_search', self.request, self) results = self.result_container.get_ordered_results() for result in results: - plugins.call('on_result', self.request, self, result) + plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result) return self.result_container diff --git a/searx/webapp.py b/searx/webapp.py index 4fee6e588..58f9815f9 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -419,7 +419,7 @@ def index(): try: search_query = get_search_query_from_webapp(request.preferences, request.form) # search = Search(search_query) # without plugins - search = SearchWithPlugins(search_query, request) + search = SearchWithPlugins(search_query, request.user_plugins, request) result_container = search.search() except: request.errors.append(gettext('search error')) diff --git a/tests/unit/test_plugins.py b/tests/unit/test_plugins.py index c9e65dfcb..78dcea478 100644 --- a/tests/unit/test_plugins.py +++ b/tests/unit/test_plugins.py @@ -28,14 +28,12 @@ class PluginStoreTest(SearxTestCase): testplugin = plugins.Plugin() store.register(testplugin) setattr(testplugin, 'asdf', Mock()) - request = Mock(user_plugins=[]) - store.call('asdf', request, Mock()) + request = Mock() + store.call([], 'asdf', request, Mock()) self.assertFalse(testplugin.asdf.called) - request.user_plugins.append(testplugin) - store.call('asdf', request, Mock()) - + store.call([testplugin], 'asdf', request, Mock()) self.assertTrue(testplugin.asdf.called) @@ -48,42 +46,40 @@ class SelfIPTest(SearxTestCase): self.assertTrue(len(store.plugins) == 1) # IP test - request = Mock(user_plugins=store.plugins, - remote_addr='127.0.0.1') + request = Mock(remote_addr='127.0.0.1') request.headers.getlist.return_value = [] search = get_search_mock(query='ip', pageno=1) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertTrue('127.0.0.1' in search.result_container.answers) search = get_search_mock(query='ip', pageno=2) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertFalse('127.0.0.1' in search.result_container.answers) # User agent test - request = Mock(user_plugins=store.plugins, - user_agent='Mock') + request = Mock(user_agent='Mock') request.headers.getlist.return_value = [] search = get_search_mock(query='user-agent', pageno=1) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertTrue('Mock' in search.result_container.answers) search = get_search_mock(query='user-agent', pageno=2) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertFalse('Mock' in search.result_container.answers) search = get_search_mock(query='user-agent', pageno=1) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertTrue('Mock' in search.result_container.answers) search = get_search_mock(query='user-agent', pageno=2) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertFalse('Mock' in search.result_container.answers) search = get_search_mock(query='What is my User-Agent?', pageno=1) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertTrue('Mock' in search.result_container.answers) search = get_search_mock(query='What is my User-Agent?', pageno=2) - store.call('post_search', request, search) + store.call(store.plugins, 'post_search', request, search) self.assertFalse('Mock' in search.result_container.answers) |