From 2a109d0a5fb55a5cc7f9d2efdda5c7389e5f172a Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 8 Jun 2021 11:56:30 +0200 Subject: [PATCH] [mod] refactor searx.webapp.render render automatically adds these variables to the template context: * advanced_search * all_categories * categories before render was checking if the variable was already set but it is actually never set by the callers --- searx/webapp.py | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index 9ce23d3c1..d33fd0f5d 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -415,6 +415,22 @@ def get_translations(): } +def _get_ordered_categories(): + ordered_categories = list(settings['ui']['categories_order']) + ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories) + return ordered_categories + + +def _get_enable_categories(all_categories): + disabled_engines = request.preferences.engines.get_disabled() + enabled_categories = set(category for engine_name in engines + for category in engines[engine_name].categories + if (engine_name, category) not in disabled_engines) + return [x for x in + all_categories + if x in enabled_categories] + + def render(template_name, override_theme=None, **kwargs): # values from the HTTP requests kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint @@ -426,17 +442,11 @@ def render(template_name, override_theme=None, **kwargs): kwargs['method'] = request.preferences.get_value('method') kwargs['autocomplete'] = request.preferences.get_value('autocomplete') kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab') + kwargs['advanced_search'] = request.preferences.get_value('advanced_search') kwargs['safesearch'] = str(request.preferences.get_value('safesearch')) kwargs['theme'] = get_current_theme_name(override=override_theme) - - if 'categories' not in kwargs: - disabled_engines = request.preferences.engines.get_disabled() - enabled_categories = set(category for engine_name in engines - for category in engines[engine_name].categories - if (engine_name, category) not in disabled_engines) - kwargs['categories'] = [x for x in - _get_ordered_categories() - if x in enabled_categories] + kwargs['all_categories'] = _get_ordered_categories() + kwargs['categories'] = _get_enable_categories(kwargs['all_categories']) # i18n kwargs['language_codes'] = languages # from searx.languages @@ -488,12 +498,6 @@ def render(template_name, override_theme=None, **kwargs): return result -def _get_ordered_categories(): - ordered_categories = list(settings['ui']['categories_order']) - ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories) - return ordered_categories - - @app.before_request def pre_request(): request.start_time = default_timer() # pylint: disable=assigning-non-slot @@ -605,9 +609,6 @@ def index_error(output_format, error_message): def index(): """Render index page.""" - # UI - advanced_search = request.preferences.get_value('advanced_search') - # redirect to search if there's a query in the request if request.form.get('q'): query = ('?' + request.query_string.decode()) if request.query_string else '' @@ -616,7 +617,6 @@ def index(): return render( 'index.html', selected_categories=get_selected_categories(request.preferences, request.form), - advanced_search=advanced_search, ) @@ -642,7 +642,6 @@ def search(): if output_format == 'html': return render( 'index.html', - advanced_search=request.preferences.get_value('advanced_search'), selected_categories=get_selected_categories(request.preferences, request.form), ) return index_error(output_format, 'No query'), 400 @@ -1008,7 +1007,6 @@ def preferences(): # return render('preferences.html', selected_categories=get_selected_categories(request.preferences, request.form), - all_categories=_get_ordered_categories(), locales=settings['locales'], current_locale=request.preferences.get_value("locale"), image_proxy=image_proxy,