From d1b12f9016492143a4b3750c9fba89a7168fa179 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sun, 8 Mar 2015 23:30:31 +0100 Subject: [mod] search return value --- searx/webapp.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'searx/webapp.py') diff --git a/searx/webapp.py b/searx/webapp.py index 13c965e0d..f71df796a 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -323,8 +323,7 @@ def index(): 'index.html', ) - search.results, search.suggestions,\ - search.answers, search.infoboxes = search.search(request) + search.search(request) for result in search.results: -- cgit v1.2.3 From 00cc4dcbf44d9ecea89befb08cae4ee5561c4247 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Tue, 10 Mar 2015 19:55:22 +0100 Subject: [enh] plugin support basics ++ self ip plugin --- searx/webapp.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'searx/webapp.py') diff --git a/searx/webapp.py b/searx/webapp.py index f71df796a..f5d779f15 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -27,6 +27,18 @@ import cStringIO import os import hashlib +from searx import logger +logger = logger.getChild('webapp') + +try: + from pygments import highlight + from pygments.lexers import get_lexer_by_name + from pygments.formatters import HtmlFormatter +except: + logger.critical("cannot import dependency: pygments") + from sys import exit + exit(1) + from datetime import datetime, timedelta from urllib import urlencode from werkzeug.contrib.fixers import ProxyFix @@ -51,19 +63,9 @@ from searx.https_rewrite import https_url_rewrite from searx.search import Search from searx.query import Query from searx.autocomplete import searx_bang, backends as autocomplete_backends -from searx import logger -try: - from pygments import highlight - from pygments.lexers import get_lexer_by_name - from pygments.formatters import HtmlFormatter -except: - logger.critical("cannot import dependency: pygments") - from sys import exit - exit(1) +from searx.plugins import plugins -logger = logger.getChild('webapp') - static_path, templates_path, themes =\ get_themes(settings['themes_path'] if settings.get('themes_path') @@ -323,7 +325,10 @@ def index(): 'index.html', ) - search.search(request) + if plugins.call('pre_search', request, locals()): + search.search(request) + + plugins.call('post_search', request, locals()) for result in search.results: -- cgit v1.2.3 From cae22bfc7609d00f987e679cf6d048873d268d84 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Tue, 10 Mar 2015 20:44:02 +0100 Subject: [enh] per user plugin switch --- searx/webapp.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'searx/webapp.py') diff --git a/searx/webapp.py b/searx/webapp.py index f5d779f15..78c0c71f1 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -305,6 +305,18 @@ def render(template_name, override_theme=None, **kwargs): '{}/{}'.format(kwargs['theme'], template_name), **kwargs) +@app.before_request +def pre_request(): + + request.user_plugins = [] + allowed_plugins = request.cookies.get('allowed_plugins', '').split(',') + disabled_plugins = request.cookies.get('disabled_plugins', '').split(',') + for plugin in plugins: + if ((plugin.default_on and plugin.name not in disabled_plugins) + or plugin.name in allowed_plugins): + request.user_plugins.append(plugin) + + @app.route('/search', methods=['GET', 'POST']) @app.route('/', methods=['GET', 'POST']) def index(): -- cgit v1.2.3 From 88aee611f7c016d1f05202af9d9f647c8e5d26e2 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Tue, 10 Mar 2015 22:45:59 +0100 Subject: [mod] merge GET, POST vars --- searx/webapp.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'searx/webapp.py') diff --git a/searx/webapp.py b/searx/webapp.py index 78c0c71f1..d2985c281 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -307,6 +307,11 @@ def render(template_name, override_theme=None, **kwargs): @app.before_request def pre_request(): + # merge GET, POST vars + request.form = dict(request.form.items()) + for k, v in request.args: + if k not in request.form: + request.form[k] = v request.user_plugins = [] allowed_plugins = request.cookies.get('allowed_plugins', '').split(',') @@ -507,7 +512,6 @@ def preferences(): autocomplete = '' method = 'POST' safesearch = '1' - for pd_name, pd in request.form.items(): if pd_name.startswith('category_'): category = pd_name[9:] -- cgit v1.2.3 From 37c58fd9caefe67d0c650ea1e900ad83e78e8c1a Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Wed, 11 Mar 2015 18:57:36 +0100 Subject: [enh] plugin preferences - server-side ++ oscar theme --- searx/webapp.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'searx/webapp.py') diff --git a/searx/webapp.py b/searx/webapp.py index d2985c281..e3c372e03 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -317,8 +317,8 @@ def pre_request(): allowed_plugins = request.cookies.get('allowed_plugins', '').split(',') disabled_plugins = request.cookies.get('disabled_plugins', '').split(',') for plugin in plugins: - if ((plugin.default_on and plugin.name not in disabled_plugins) - or plugin.name in allowed_plugins): + if ((plugin.default_on and plugin.id not in disabled_plugins) + or plugin.id in allowed_plugins): request.user_plugins.append(plugin) @@ -508,6 +508,7 @@ def preferences(): blocked_engines = get_blocked_engines(engines, request.cookies) else: # on save selected_categories = [] + post_disabled_plugins = [] locale = None autocomplete = '' method = 'POST' @@ -534,14 +535,34 @@ def preferences(): safesearch = pd elif pd_name.startswith('engine_'): if pd_name.find('__') > -1: - engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1) + # TODO fix underscore vs space + engine_name, category = [x.replace('_', ' ') for x in + pd_name.replace('engine_', '', 1).split('__', 1)] if engine_name in engines and category in engines[engine_name].categories: blocked_engines.append((engine_name, category)) elif pd_name == 'theme': theme = pd if pd in themes else default_theme + elif pd_name.startswith('plugin_'): + plugin_id = pd_name.replace('plugin_', '', 1) + if not any(plugin.id == plugin_id for plugin in plugins): + continue + post_disabled_plugins.append(plugin_id) else: resp.set_cookie(pd_name, pd, max_age=cookie_max_age) + disabled_plugins = [] + allowed_plugins = [] + for plugin in plugins: + if plugin.default_on: + if plugin.id in post_disabled_plugins: + disabled_plugins.append(plugin.id) + elif plugin.id not in post_disabled_plugins: + allowed_plugins.append(plugin.id) + + resp.set_cookie('disabled_plugins', ','.join(disabled_plugins), max_age=cookie_max_age) + + resp.set_cookie('allowed_plugins', ','.join(allowed_plugins), max_age=cookie_max_age) + resp.set_cookie( 'blocked_engines', ','.join('__'.join(e) for e in blocked_engines), max_age=cookie_max_age @@ -591,6 +612,8 @@ def preferences(): autocomplete_backends=autocomplete_backends, shortcuts={y: x for x, y in engine_shortcuts.items()}, themes=themes, + plugins=plugins, + allowed_plugins=[plugin.id for plugin in request.user_plugins], theme=get_current_theme_name()) -- cgit v1.2.3