diff options
| author | Alexandre Flament <alex@al-f.net> | 2016-12-09 23:11:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-09 23:11:45 +0100 |
| commit | e48f07a367e55bf8aa881902b977bd7ce1cd2bb6 (patch) | |
| tree | 8b285b2dd483006d08c03b9fec49cba49ff16a87 /searx/preferences.py | |
| parent | 219f047bf359ce94397241b875639f3aaddb0fe5 (diff) | |
| parent | d80fb2c8e8995facb3a25c152c47a93eecf1fee4 (diff) | |
Merge branch 'master' into searchpy2
Diffstat (limited to 'searx/preferences.py')
| -rw-r--r-- | searx/preferences.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/searx/preferences.py b/searx/preferences.py index ed7b6f6cd..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,11 +216,12 @@ 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()), + choices=autocomplete.backends.keys() + ['']), 'image_proxy': MapSetting(settings['server']['image_proxy'], map={'': settings['server']['image_proxy'], '0': False, |