summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2022-01-03 07:24:20 +0100
committerMartin Fischer <martin@push-f.com>2022-01-05 11:03:44 +0100
commit1e195f5b95d4c59105249d66f5d170d40139a461 (patch)
tree5cb2b7a37d4f3fc95f986c262e4e38c40821d4b9
parent5d74bf382012c73c701e1a4969e0f420b099db9f (diff)
[mod] move group_engines_in_tab to searx.webutils
-rw-r--r--docs/conf.py3
-rw-r--r--searx/engines/__init__.py24
-rwxr-xr-xsearx/webapp.py4
-rw-r--r--searx/webutils.py27
4 files changed, 30 insertions, 28 deletions
diff --git a/docs/conf.py b/docs/conf.py
index da989e62e..62b541f2f 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -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
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
index 9472186bf..70f6281a6 100644
--- a/searx/engines/__init__.py
+++ b/searx/engines/__init__.py
@@ -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,
- )
- ]
diff --git a/searx/webapp.py b/searx/webapp.py
index c0467932e..b40aa912e 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -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,
diff --git a/searx/webutils.py b/searx/webutils.py
index 068582858..4b4b0a965 100644
--- a/searx/webutils.py
+++ b/searx/webutils.py
@@ -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,
+ )
+ ]