forked from zaclys/searxng
[mod] searx uses flask framework only in webapp.py. Make migration to another framework easier.
This commit is contained in:
parent
3d8c9bab96
commit
84a2c97a65
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue