summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/preferences.py29
-rw-r--r--searx/settings.yml1
-rw-r--r--searx/settings_robot.yml1
3 files changed, 18 insertions, 13 deletions
diff --git a/searx/preferences.py b/searx/preferences.py
index 8b787fc59..4436b8fe8 100644
--- a/searx/preferences.py
+++ b/searx/preferences.py
@@ -49,28 +49,32 @@ class StringSetting(Setting):
class EnumStringSetting(Setting):
"""Setting of a value which can only come from the given choices"""
+ def _validate_selection(self, selection):
+ if selection not in self.choices:
+ raise ValidationException('Invalid value: "{0}"'.format(selection))
+
def _post_init(self):
if not hasattr(self, 'choices'):
raise MissingArgumentException('Missing argument: choices')
-
- if self.value != '' and self.value not in self.choices:
- raise ValidationException('Invalid default value: {0}'.format(self.value))
+ self._validate_selection(self.value)
def parse(self, data):
- if data not in self.choices and data != self.value:
- raise ValidationException('Invalid choice: {0}'.format(data))
+ self._validate_selection(data)
self.value = data
class MultipleChoiceSetting(EnumStringSetting):
"""Setting of values which can only come from the given choices"""
+ def _validate_selections(self, selections):
+ for item in selections:
+ if item not in self.choices:
+ raise ValidationException('Invalid value: "{0}"'.format(selections))
+
def _post_init(self):
if not hasattr(self, 'choices'):
raise MissingArgumentException('Missing argument: choices')
- for item in self.value:
- if item not in self.choices:
- raise ValidationException('Invalid default value: {0}'.format(self.value))
+ self._validate_selections(self.value)
def parse(self, data):
if data == '':
@@ -78,9 +82,7 @@ class MultipleChoiceSetting(EnumStringSetting):
return
elements = data.split(',')
- for item in elements:
- if item not in self.choices:
- raise ValidationException('Invalid choice: {0}'.format(item))
+ self._validate_selections(elements)
self.value = elements
def parse_form(self, data):
@@ -214,9 +216,10 @@ class Preferences(object):
super(Preferences, self).__init__()
self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories),
- 'language': EnumStringSetting('all', choices=LANGUAGE_CODES),
+ 'language': EnumStringSetting(settings['search']['language'],
+ choices=LANGUAGE_CODES),
'locale': EnumStringSetting(settings['ui']['default_locale'],
- choices=settings['locales'].keys()),
+ choices=settings['locales'].keys() + ['']),
'autocomplete': EnumStringSetting(settings['search']['autocomplete'],
choices=autocomplete.backends.keys() + ['']),
'image_proxy': MapSetting(settings['server']['image_proxy'],
diff --git a/searx/settings.yml b/searx/settings.yml
index 573cf5458..733341c31 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -5,6 +5,7 @@ general:
search:
safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default
+ language : "all"
server:
port : 8888
diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml
index 43dc9b00a..7d2701449 100644
--- a/searx/settings_robot.yml
+++ b/searx/settings_robot.yml
@@ -5,6 +5,7 @@ general:
search:
safe_search : 0
autocomplete : ""
+ language: "all"
server:
port : 11111