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

Commit 1e195f5b authored by Martin Fischer's avatar Martin Fischer
Browse files

[mod] move group_engines_in_tab to searx.webutils

parent 5d74bf38
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ exclude_patterns = ['build-templates/*.rst']

import searx.engines
import searx.plugins
import searx.webutils
searx.engines.load_engines(searx.settings['engines'])

jinja_contexts = {
@@ -54,7 +55,7 @@ jinja_contexts = {
    },
}
jinja_filters = {
    'group_engines_in_tab': searx.engines.group_engines_in_tab,
    'group_engines_in_tab': searx.webutils.group_engines_in_tab,
}

# Let the Jinja template in configured_engines.rst access documented_modules
+0 −24
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@ usage::

import sys
import copy
import itertools

from os.path import realpath, dirname
from babel.localedata import locale_identifiers
@@ -267,26 +266,3 @@ def load_engines(engine_list):
        if engine:
            register_engine(engine)
    return engines


DEFAULT_GROUP_NAME = 'others'


def group_engines_in_tab(engines):  # pylint: disable=redefined-outer-name
    def engine_sort_key(engine):
        return (engine.about.get('language', ''), engine.name)

    def group_sort_key(group):
        return (group[0] == DEFAULT_GROUP_NAME, group[0].lower())

    def get_group(eng):
        non_tab_engines = [c for c in eng.categories if c not in settings['categories_as_tabs'] + [OTHER_CATEGORY]]
        return non_tab_engines[0] if len(non_tab_engines) > 0 else DEFAULT_GROUP_NAME

    return [
        (groupname, sorted(engines, key=engine_sort_key))
        for groupname, engines in sorted(
            ((name, list(engines)) for name, engines in itertools.groupby(sorted(engines, key=get_group), get_group)),
            key=group_sort_key,
        )
    ]
+2 −2
Original line number Diff line number Diff line
@@ -60,11 +60,9 @@ from searx.settings_loader import get_default_settings_path
from searx.exceptions import SearxParameterException
from searx.engines import (
    OTHER_CATEGORY,
    DEFAULT_GROUP_NAME,
    categories,
    engines,
    engine_shortcuts,
    group_engines_in_tab,
)
from searx.webutils import (
    UnicodeWriter,
@@ -76,6 +74,8 @@ from searx.webutils import (
    new_hmac,
    is_hmac_of,
    is_flask_run_cmdline,
    DEFAULT_GROUP_NAME,
    group_engines_in_tab,
)
from searx.webadapter import (
    get_search_query_from_webapp,
+26 −1
Original line number Diff line number Diff line
@@ -5,11 +5,13 @@ import hashlib
import hmac
import re
import inspect
import itertools

from io import StringIO
from codecs import getincrementalencoder

from searx import logger
from searx import logger, settings
from searx.engines import OTHER_CATEGORY


VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
@@ -134,3 +136,26 @@ def is_flask_run_cmdline():
    if len(frames) < 2:
        return False
    return frames[-2].filename.endswith('flask/cli.py')


DEFAULT_GROUP_NAME = 'others'


def group_engines_in_tab(engines):
    def engine_sort_key(engine):
        return (engine.about.get('language', ''), engine.name)

    def group_sort_key(group):
        return (group[0] == DEFAULT_GROUP_NAME, group[0].lower())

    def get_group(eng):
        non_tab_engines = [c for c in eng.categories if c not in settings['categories_as_tabs'] + [OTHER_CATEGORY]]
        return non_tab_engines[0] if len(non_tab_engines) > 0 else DEFAULT_GROUP_NAME

    return [
        (groupname, sorted(engines, key=engine_sort_key))
        for groupname, engines in sorted(
            ((name, list(engines)) for name, engines in itertools.groupby(sorted(engines, key=get_group), get_group)),
            key=group_sort_key,
        )
    ]