commit: 84a2c97a653d216690da0000f47582118709d2d7
parent 3d8c9bab9618b4d0cceadfac888af4560f7d3c9b
Author: Alexandre Flament <alex@al-f.net>
Date: Mon, 2 Jan 2017 12:06:04 +0100
[mod] searx uses flask framework only in webapp.py. Make migration to another framework easier.
Diffstat:
4 files changed, 21 insertions(+), 24 deletions(-)
diff --git 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
@@ -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
@@ -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
@@ -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)