on master help sign in
make category order configurable using ui.categories_order
640da73Noémi Ványi
searx/settings.yml+6
@@ -24,6 +24,12 @@ ui:
24 default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
24 default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
25 theme_args :
25 theme_args :
26 oscar_style : logicodev # default style of oscar
26 oscar_style : logicodev # default style of oscar
27+# categories_order :
28+# - general
29+# - files
30+# - map
31+# - it
32+# - science
27
33
28# searx supports result proxification using an external service: https://github.com/asciimoo/morty
34# searx supports result proxification using an external service: https://github.com/asciimoo/morty
29# uncomment below section if you have running morty proxy
35# uncomment below section if you have running morty proxy
searx/webapp.py+15−9
@@ -355,17 +355,12 @@ def render(template_name, override_theme=None, **kwargs):
355 if (engine_name, category) not in disabled_engines)
355 if (engine_name, category) not in disabled_engines)
356
356
357 if 'categories' not in kwargs:
357 if 'categories' not in kwargs:
358− kwargs['categories'] = ['general']
358+ kwargs['categories'] = [x for x in
359− kwargs['categories'].extend(x for x in
359+ _get_ordered_categories()
360− sorted(categories.keys())
361− if x != 'general'
362− and x in enabled_categories)
360+ if x in enabled_categories]
363
361
364 if 'all_categories' not in kwargs:
362 if 'all_categories' not in kwargs:
365− kwargs['all_categories'] = ['general']
363+ kwargs['all_categories'] = _get_ordered_categories()
366− kwargs['all_categories'].extend(x for x in
367− sorted(categories.keys())
368− if x != 'general')
369
364
370 if 'selected_categories' not in kwargs:
365 if 'selected_categories' not in kwargs:
371 kwargs['selected_categories'] = []
366 kwargs['selected_categories'] = []
@@ -443,6 +438,17 @@ def render(template_name, override_theme=None, **kwargs):
443 '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
438 '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
444
439
445
440
441+def _get_ordered_categories():
442+ ordered_categories = []
443+ if 'categories_order' not in settings['ui']:
444+ ordered_categories = ['general']
445+ ordered_categories.extend(x for x in sorted(categories.keys()) if x != 'general')
446+ return ordered_categories
447+ ordered_categories = settings['ui']['categories_order']
448+ ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories)
449+ return ordered_categories
450+
451+
446@app.before_request
452@app.before_request
447def pre_request():
453def pre_request():
448 request.start_time = time()
454 request.start_time = time()