new preferences handling

Preferences class was introduced in order to handle user preferences. Right now
it parses cookies and the form in preferences. Also it can retrieve settings
based on the name of the setting.

ATTENTION
Please note that engine preferences are handled differently from now on. So it
introduces incompatible changes. Every user who has saved preferences should reset and
save his/her settings again.

This change was needed, because everytime a default disabled engine was
added saved user preferences would broke. Now engine setting tracking is
fixed.
This commit is contained in:
Noemi Vanyi 2016-04-08 16:38:05 +02:00
parent 9331fc28a8
commit fe691a0988
6 changed files with 315 additions and 167 deletions

View file

@ -23,7 +23,7 @@ from searx.engines import (
categories, engines
)
from searx.languages import language_codes
from searx.utils import gen_useragent, get_blocked_engines
from searx.utils import gen_useragent
from searx.query import Query
from searx.results import ResultContainer
from searx import logger
@ -140,15 +140,13 @@ class Search(object):
self.lang = 'all'
# set blocked engines
self.blocked_engines = get_blocked_engines(engines, request.cookies)
self.blocked_engines = request.preferences.engines.get_disabled()
self.result_container = ResultContainer()
self.request_data = {}
# set specific language if set
if request.cookies.get('language')\
and request.cookies['language'] in (x[0] for x in language_codes):
self.lang = request.cookies['language']
self.lang = request.preferences.get_value('language')
# set request method
if request.method == 'POST':
@ -294,11 +292,8 @@ class Search(object):
else:
request_params['language'] = self.lang
try:
# 0 = None, 1 = Moderate, 2 = Strict
request_params['safesearch'] = int(request.cookies.get('safesearch'))
except Exception:
request_params['safesearch'] = settings['search']['safe_search']
# 0 = None, 1 = Moderate, 2 = Strict
request_params['safesearch'] = request.preferences.get_value('safesearch')
# update request parameters dependent on
# search-engine (contained in engines folder)