Browse Source

[mod] move group_engines_in_tab to searx.webutils

Martin Fischer 3 years ago
parent
commit
1e195f5b95
4 changed files with 30 additions and 28 deletions
  1. 2 1
      docs/conf.py
  2. 0 24
      searx/engines/__init__.py
  3. 2 2
      searx/webapp.py
  4. 26 1
      searx/webutils.py

+ 2 - 1
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

+ 0 - 24
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,
-        )
-    ]

+ 2 - 2
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,

+ 26 - 1
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,
+        )
+    ]