[mod] move group_engines_in_tab to searx.webutils
This commit is contained in:
		
							parent
							
								
									5d74bf3820
								
							
						
					
					
						commit
						1e195f5b95
					
				| @ -39,6 +39,7 @@ exclude_patterns = ['build-templates/*.rst'] | |||||||
| 
 | 
 | ||||||
| import searx.engines | import searx.engines | ||||||
| import searx.plugins | import searx.plugins | ||||||
|  | import searx.webutils | ||||||
| searx.engines.load_engines(searx.settings['engines']) | searx.engines.load_engines(searx.settings['engines']) | ||||||
| 
 | 
 | ||||||
| jinja_contexts = { | jinja_contexts = { | ||||||
| @ -54,7 +55,7 @@ jinja_contexts = { | |||||||
|     }, |     }, | ||||||
| } | } | ||||||
| jinja_filters = { | 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 | # Let the Jinja template in configured_engines.rst access documented_modules | ||||||
|  | |||||||
| @ -13,7 +13,6 @@ usage:: | |||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
| import copy | import copy | ||||||
| import itertools |  | ||||||
| 
 | 
 | ||||||
| from os.path import realpath, dirname | from os.path import realpath, dirname | ||||||
| from babel.localedata import locale_identifiers | from babel.localedata import locale_identifiers | ||||||
| @ -267,26 +266,3 @@ def load_engines(engine_list): | |||||||
|         if engine: |         if engine: | ||||||
|             register_engine(engine) |             register_engine(engine) | ||||||
|     return engines |     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.exceptions import SearxParameterException | ||||||
| from searx.engines import ( | from searx.engines import ( | ||||||
|     OTHER_CATEGORY, |     OTHER_CATEGORY, | ||||||
|     DEFAULT_GROUP_NAME, |  | ||||||
|     categories, |     categories, | ||||||
|     engines, |     engines, | ||||||
|     engine_shortcuts, |     engine_shortcuts, | ||||||
|     group_engines_in_tab, |  | ||||||
| ) | ) | ||||||
| from searx.webutils import ( | from searx.webutils import ( | ||||||
|     UnicodeWriter, |     UnicodeWriter, | ||||||
| @ -76,6 +74,8 @@ from searx.webutils import ( | |||||||
|     new_hmac, |     new_hmac, | ||||||
|     is_hmac_of, |     is_hmac_of, | ||||||
|     is_flask_run_cmdline, |     is_flask_run_cmdline, | ||||||
|  |     DEFAULT_GROUP_NAME, | ||||||
|  |     group_engines_in_tab, | ||||||
| ) | ) | ||||||
| from searx.webadapter import ( | from searx.webadapter import ( | ||||||
|     get_search_query_from_webapp, |     get_search_query_from_webapp, | ||||||
|  | |||||||
| @ -5,11 +5,13 @@ import hashlib | |||||||
| import hmac | import hmac | ||||||
| import re | import re | ||||||
| import inspect | import inspect | ||||||
|  | import itertools | ||||||
| 
 | 
 | ||||||
| from io import StringIO | from io import StringIO | ||||||
| from codecs import getincrementalencoder | 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})?$') | 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: |     if len(frames) < 2: | ||||||
|         return False |         return False | ||||||
|     return frames[-2].filename.endswith('flask/cli.py') |     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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Martin Fischer
						Martin Fischer