@@ -344,6 +344,8 @@ def render(template_name, override_theme=None, **kwargs):
344344
345345 kwargs['cookies'] = request.cookies
346346
347+ kwargs['errors'] = request.errors
348+
347349 kwargs['instance_name'] = settings['general']['instance_name']
348350
349351 kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
@@ -364,15 +366,16 @@ def render(template_name, override_theme=None, **kwargs):
364366
365367@app.before_request
366368def pre_request():
367− # merge GET, POST vars
369+ request.errors = []
370+
368371 preferences = Preferences(themes, categories.keys(), engines, plugins)
369372 try:
370373 preferences.parse_cookies(request.cookies)
371374 except:
372− # TODO throw error message to the user
373− logger.warning('Invalid config')
375+ request.errors.append(gettext('Invalid settings, please edit your preferences'))
374376 request.preferences = preferences
375377
378+ # merge GET, POST vars
376379 # request.form
377380 request.form = dict(request.form.items())
378381 for k, v in request.args.items():
@@ -397,7 +400,7 @@ def index():
397400 Supported outputs: html, json, csv, rss.
398401 """
399402
400− if not request.args and not request.form:
403+ if request.form.get('q') is None:
401404 return render(
402405 'index.html',
403406 )
@@ -410,7 +413,8 @@ def index():
410413 # search = Search(search_query) # without plugins
411414 search = SearchWithPlugins(search_query, request)
412415 result_container = search.search()
413− except Exception:
416+ except:
417+ request.errors.append(gettext('search error'))
414418 logger.exception('search error')
415419 return render(
416420 'index.html',
@@ -573,7 +577,7 @@ def preferences():
573577 try:
574578 request.preferences.parse_form(request.form)
575579 except ValidationException:
576− # TODO use flash feature of flask
580+ request.errors.append(gettext('Invalid settings, please edit your preferences'))
577581 return resp
578582 return request.preferences.save(resp)
579583