|  | @@ -415,6 +415,22 @@ def get_translations():
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +def _get_ordered_categories():
 | 
											
												
													
														|  | 
 |  | +    ordered_categories = list(settings['ui']['categories_order'])
 | 
											
												
													
														|  | 
 |  | +    ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories)
 | 
											
												
													
														|  | 
 |  | +    return ordered_categories
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +def _get_enable_categories(all_categories):
 | 
											
												
													
														|  | 
 |  | +    disabled_engines = request.preferences.engines.get_disabled()
 | 
											
												
													
														|  | 
 |  | +    enabled_categories = set(category for engine_name in engines
 | 
											
												
													
														|  | 
 |  | +                            for category in engines[engine_name].categories
 | 
											
												
													
														|  | 
 |  | +                            if (engine_name, category) not in disabled_engines)
 | 
											
												
													
														|  | 
 |  | +    return [x for x in
 | 
											
												
													
														|  | 
 |  | +            all_categories
 | 
											
												
													
														|  | 
 |  | +            if x in enabled_categories]
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  def render(template_name, override_theme=None, **kwargs):
 |  |  def render(template_name, override_theme=None, **kwargs):
 | 
											
												
													
														|  |      # values from the HTTP requests
 |  |      # values from the HTTP requests
 | 
											
												
													
														|  |      kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint
 |  |      kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint
 | 
											
										
											
												
													
														|  | @@ -426,17 +442,11 @@ def render(template_name, override_theme=None, **kwargs):
 | 
											
												
													
														|  |      kwargs['method'] = request.preferences.get_value('method')
 |  |      kwargs['method'] = request.preferences.get_value('method')
 | 
											
												
													
														|  |      kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
 |  |      kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
 | 
											
												
													
														|  |      kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
 |  |      kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
 | 
											
												
													
														|  | 
 |  | +    kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
 | 
											
												
													
														|  |      kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
 |  |      kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
 | 
											
												
													
														|  |      kwargs['theme'] = get_current_theme_name(override=override_theme)
 |  |      kwargs['theme'] = get_current_theme_name(override=override_theme)
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    if 'categories' not in kwargs:
 |  | 
 | 
											
												
													
														|  | -        disabled_engines = request.preferences.engines.get_disabled()
 |  | 
 | 
											
												
													
														|  | -        enabled_categories = set(category for engine_name in engines
 |  | 
 | 
											
												
													
														|  | -                                for category in engines[engine_name].categories
 |  | 
 | 
											
												
													
														|  | -                                if (engine_name, category) not in disabled_engines)
 |  | 
 | 
											
												
													
														|  | -        kwargs['categories'] = [x for x in
 |  | 
 | 
											
												
													
														|  | -                                _get_ordered_categories()
 |  | 
 | 
											
												
													
														|  | -                                if x in enabled_categories]
 |  | 
 | 
											
												
													
														|  | 
 |  | +    kwargs['all_categories'] = _get_ordered_categories()
 | 
											
												
													
														|  | 
 |  | +    kwargs['categories'] = _get_enable_categories(kwargs['all_categories'])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # i18n
 |  |      # i18n
 | 
											
												
													
														|  |      kwargs['language_codes'] = languages  # from searx.languages
 |  |      kwargs['language_codes'] = languages  # from searx.languages
 | 
											
										
											
												
													
														|  | @@ -488,12 +498,6 @@ def render(template_name, override_theme=None, **kwargs):
 | 
											
												
													
														|  |      return result
 |  |      return result
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -def _get_ordered_categories():
 |  | 
 | 
											
												
													
														|  | -    ordered_categories = list(settings['ui']['categories_order'])
 |  | 
 | 
											
												
													
														|  | -    ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories)
 |  | 
 | 
											
												
													
														|  | -    return ordered_categories
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  @app.before_request
 |  |  @app.before_request
 | 
											
												
													
														|  |  def pre_request():
 |  |  def pre_request():
 | 
											
												
													
														|  |      request.start_time = default_timer()  # pylint: disable=assigning-non-slot
 |  |      request.start_time = default_timer()  # pylint: disable=assigning-non-slot
 | 
											
										
											
												
													
														|  | @@ -605,9 +609,6 @@ def index_error(output_format, error_message):
 | 
											
												
													
														|  |  def index():
 |  |  def index():
 | 
											
												
													
														|  |      """Render index page."""
 |  |      """Render index page."""
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    # UI
 |  | 
 | 
											
												
													
														|  | -    advanced_search = request.preferences.get_value('advanced_search')
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |      # redirect to search if there's a query in the request
 |  |      # redirect to search if there's a query in the request
 | 
											
												
													
														|  |      if request.form.get('q'):
 |  |      if request.form.get('q'):
 | 
											
												
													
														|  |          query = ('?' + request.query_string.decode()) if request.query_string else ''
 |  |          query = ('?' + request.query_string.decode()) if request.query_string else ''
 | 
											
										
											
												
													
														|  | @@ -616,7 +617,6 @@ def index():
 | 
											
												
													
														|  |      return render(
 |  |      return render(
 | 
											
												
													
														|  |          'index.html',
 |  |          'index.html',
 | 
											
												
													
														|  |          selected_categories=get_selected_categories(request.preferences, request.form),
 |  |          selected_categories=get_selected_categories(request.preferences, request.form),
 | 
											
												
													
														|  | -        advanced_search=advanced_search,
 |  | 
 | 
											
												
													
														|  |      )
 |  |      )
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -642,7 +642,6 @@ def search():
 | 
											
												
													
														|  |          if output_format == 'html':
 |  |          if output_format == 'html':
 | 
											
												
													
														|  |              return render(
 |  |              return render(
 | 
											
												
													
														|  |                  'index.html',
 |  |                  'index.html',
 | 
											
												
													
														|  | -                advanced_search=request.preferences.get_value('advanced_search'),
 |  | 
 | 
											
												
													
														|  |                  selected_categories=get_selected_categories(request.preferences, request.form),
 |  |                  selected_categories=get_selected_categories(request.preferences, request.form),
 | 
											
												
													
														|  |              )
 |  |              )
 | 
											
												
													
														|  |          return index_error(output_format, 'No query'), 400
 |  |          return index_error(output_format, 'No query'), 400
 | 
											
										
											
												
													
														|  | @@ -1008,7 +1007,6 @@ def preferences():
 | 
											
												
													
														|  |      #
 |  |      #
 | 
											
												
													
														|  |      return render('preferences.html',
 |  |      return render('preferences.html',
 | 
											
												
													
														|  |                    selected_categories=get_selected_categories(request.preferences, request.form),
 |  |                    selected_categories=get_selected_categories(request.preferences, request.form),
 | 
											
												
													
														|  | -                  all_categories=_get_ordered_categories(),
 |  | 
 | 
											
												
													
														|  |                    locales=settings['locales'],
 |  |                    locales=settings['locales'],
 | 
											
												
													
														|  |                    current_locale=request.preferences.get_value("locale"),
 |  |                    current_locale=request.preferences.get_value("locale"),
 | 
											
												
													
														|  |                    image_proxy=image_proxy,
 |  |                    image_proxy=image_proxy,
 |