forked from zaclys/searxng
		
	[mod] move group_engines_in_tab to searx.webutils
This commit is contained in:
		
							parent
							
								
									5d74bf3820
								
							
						
					
					
						commit
						1e195f5b95
					
				
					 4 changed files with 30 additions and 28 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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, | ||||
|         ) | ||||
|     ] | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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, | ||||
|         ) | ||||
|     ] | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Martin Fischer
						Martin Fischer