logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git
commit: 1b10abfc92afed36627c7052b89d2de5e7f537ee
parent 575159b194440052d7b48aa073d7e03c80799c90
Author: Noémi Ványi <sitbackandwait@gmail.com>
Date:   Wed,  1 Nov 2017 13:58:48 +0100

minor fixes of doi resolver

Closes #1047

Diffstat:

Msearx/plugins/oa_doi_rewrite.py9++++-----
Msearx/preferences.py2+-
Msearx/templates/oscar/preferences.html29++++++++++++-----------------
Msearx/webapp.py11++---------
4 files changed, 19 insertions(+), 32 deletions(-)

diff --git a/searx/plugins/oa_doi_rewrite.py b/searx/plugins/oa_doi_rewrite.py @@ -1,7 +1,6 @@ from flask_babel import gettext import re from searx.url_utils import urlparse, parse_qsl -from flask import request from searx import settings @@ -26,12 +25,12 @@ def extract_doi(url): return None -def get_doi_resolver(): +def get_doi_resolver(args, preference_doi_resolver): doi_resolvers = settings['doi_resolvers'] - doi_resolver = request.args.get('doi_resolver', request.preferences.get_value('doi_resolver'))[0] + doi_resolver = args.get('doi_resolver', preference_doi_resolver)[0] if doi_resolver not in doi_resolvers: doi_resolvers = settings['default_doi_resolver'] - return doi_resolvers[doi_resolver] + return doi_resolver def on_result(request, search, result): @@ -40,6 +39,6 @@ def on_result(request, search, result): for suffix in ('/', '.pdf', '/full', '/meta', '/abstract'): if doi.endswith(suffix): doi = doi[:-len(suffix)] - result['url'] = get_doi_resolver() + doi + result['url'] = get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')) + doi result['parsed_url'] = urlparse(result['url']) return True diff --git a/searx/preferences.py b/searx/preferences.py @@ -15,7 +15,7 @@ LANGUAGE_CODES = [l[0] for l in languages] LANGUAGE_CODES.append('all') DISABLED = 0 ENABLED = 1 -DOI_RESOLVERS = [r for r in settings['doi_resolvers'].keys()] +DOI_RESOLVERS = list(settings['doi_resolvers']) class MissingArgumentException(Exception): diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html @@ -118,6 +118,18 @@ <option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option> </select> {{ preferences_item_footer(info, label, rtl) }} + + {% set label = _('Open Access DOI resolver') %} + {% set info = _('Redirect to open-access versions of publications when available (plugin required)') %} + {{ preferences_item_header(info, label, rtl) }} + <select class="form-control" id='doi_resolver' name='doi_resolver'> + {% for doi_resolver_name,doi_resolver_url in doi_resolvers.items() %} + <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}> + {{ doi_resolver_name }} - {{ doi_resolver_url }} + </option> + {% endfor %} + </select> + {{ preferences_item_footer(info, label, rtl) }} </div> </fieldset> </div> @@ -223,23 +235,6 @@ </div> </div> {% endfor %} - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">{{ _('OA DOI rewrite') }}</h3> - </div> - <div class="panel-body"> - <div class="col-xs-6 col-sm-4 col-md-6">{{ _('Avoid paywalls by redirecting to open-access versions of publications when available') }}</div> - <div class="col-xs-6 col-sm-4 col-md-6"> - <select class="form-control" id='doi_resolver' name='doi_resolver'> - {% for doi_resolver_name,doi_resolver_url in doi_resolvers.items() %} - <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}> - {{ doi_resolver_name }} - {{ doi_resolver_url }} - </option> - {% endfor %} - </select> - </div> - </div> - </div> </div> </fieldset> </div> diff --git a/searx/webapp.py b/searx/webapp.py @@ -66,6 +66,7 @@ from searx.search import SearchWithPlugins, get_search_query_from_webapp from searx.query import RawTextQuery from searx.autocomplete import searx_bang, backends as autocomplete_backends from searx.plugins import plugins +from searx.plugins.oa_doi_rewrite import get_doi_resolver from searx.preferences import Preferences, ValidationException from searx.answerers import answerers from searx.url_utils import urlencode, urlparse, urljoin @@ -164,14 +165,6 @@ def get_locale(): return locale -def get_doi_resolver(): - doi_resolvers = settings['doi_resolvers'] - doi_resolver = request.args.get('doi_resolver', request.preferences.get_value('doi_resolver'))[0] - if doi_resolver not in doi_resolvers: - doi_resolvers = settings['default_doi_resolver'] - return doi_resolver - - # code-highlighter @app.template_filter('code_highlighter') def code_highlighter(codelines, language=None): @@ -704,7 +697,7 @@ def preferences(): themes=themes, plugins=plugins, doi_resolvers=settings['doi_resolvers'], - current_doi_resolver=get_doi_resolver(), + current_doi_resolver=get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')), allowed_plugins=allowed_plugins, theme=get_current_theme_name(), preferences_url_params=request.preferences.get_as_url_params(),