|
@@ -59,18 +59,7 @@ class EnumStringSetting(Setting):
|
59
|
59
|
self._validate_selection(self.value)
|
60
|
60
|
|
61
|
61
|
def parse(self, data):
|
62
|
|
- if data not in self.choices and data != self.value:
|
63
|
|
- # hack to give some backwards compatibility with old language cookies
|
64
|
|
- data = str(data).replace('_', '-')
|
65
|
|
- lang = data[:2]
|
66
|
|
- if data in self.choices:
|
67
|
|
- pass
|
68
|
|
- elif lang in self.choices:
|
69
|
|
- data = lang
|
70
|
|
- elif data == 'ar-XA':
|
71
|
|
- data = 'ar-SA'
|
72
|
|
- else:
|
73
|
|
- data = 'all'
|
|
62
|
+ self._validate_selection(data)
|
74
|
63
|
self.value = data
|
75
|
64
|
|
76
|
65
|
|
|
@@ -106,6 +95,25 @@ class MultipleChoiceSetting(EnumStringSetting):
|
106
|
95
|
resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE)
|
107
|
96
|
|
108
|
97
|
|
|
98
|
+class SearchLanguageSetting(EnumStringSetting):
|
|
99
|
+ """Available choices may change, so user's value may not be in choices anymore"""
|
|
100
|
+
|
|
101
|
+ def parse(self, data):
|
|
102
|
+ if data not in self.choices and data != self.value:
|
|
103
|
+ # hack to give some backwards compatibility with old language cookies
|
|
104
|
+ data = str(data).replace('_', '-')
|
|
105
|
+ lang = data.split('-')[0]
|
|
106
|
+ if data in self.choices:
|
|
107
|
+ pass
|
|
108
|
+ elif lang in self.choices:
|
|
109
|
+ data = lang
|
|
110
|
+ elif data == 'ar-XA':
|
|
111
|
+ data = 'ar-SA'
|
|
112
|
+ else:
|
|
113
|
+ data = 'all'
|
|
114
|
+ self.value = data
|
|
115
|
+
|
|
116
|
+
|
109
|
117
|
class MapSetting(Setting):
|
110
|
118
|
"""Setting of a value that has to be translated in order to be storable"""
|
111
|
119
|
|
|
@@ -227,8 +235,8 @@ class Preferences(object):
|
227
|
235
|
super(Preferences, self).__init__()
|
228
|
236
|
|
229
|
237
|
self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories),
|
230
|
|
- 'language': EnumStringSetting(settings['search']['language'],
|
231
|
|
- choices=LANGUAGE_CODES),
|
|
238
|
+ 'language': SearchLanguageSetting(settings['search']['language'],
|
|
239
|
+ choices=LANGUAGE_CODES),
|
232
|
240
|
'locale': EnumStringSetting(settings['ui']['default_locale'],
|
233
|
241
|
choices=settings['locales'].keys() + ['']),
|
234
|
242
|
'autocomplete': EnumStringSetting(settings['search']['autocomplete'],
|