Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a109d0a authored by Alexandre Flament's avatar Alexandre Flament
Browse files

[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
parent 70bbd14b
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -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,