summaryrefslogtreecommitdiff
path: root/searx/preferences.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/preferences.py')
-rw-r--r--searx/preferences.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/searx/preferences.py b/searx/preferences.py
index 92fe3853c..1a143db6b 100644
--- a/searx/preferences.py
+++ b/searx/preferences.py
@@ -1,6 +1,13 @@
+from base64 import urlsafe_b64encode, urlsafe_b64decode
+from zlib import compress, decompress
+from sys import version
+
from searx import settings, autocomplete
from searx.languages import language_codes as languages
-from searx.url_utils import urlencode
+from searx.url_utils import parse_qs, urlencode
+
+if version[0] == '3':
+ unicode = str
COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
@@ -8,6 +15,7 @@ LANGUAGE_CODES = [l[0] for l in languages]
LANGUAGE_CODES.append('all')
DISABLED = 0
ENABLED = 1
+DOI_RESOLVERS = list(settings['doi_resolvers'])
class MissingArgumentException(Exception):
@@ -259,7 +267,9 @@ class Preferences(object):
'results_on_new_tab': MapSetting(False, map={'0': False,
'1': True,
'False': False,
- 'True': True})}
+ 'True': True}),
+ 'doi_resolver': MultipleChoiceSetting(['oadoi.org'], choices=DOI_RESOLVERS),
+ }
self.engines = EnginesSetting('engines', choices=engines)
self.plugins = PluginsSetting('plugins', choices=plugins)
@@ -279,7 +289,11 @@ class Preferences(object):
settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled)
settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled)
- return urlencode(settings_kv)
+ return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8')
+
+ def parse_encoded_data(self, input_data):
+ decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8')))
+ self.parse_dict({x: y[0] for x, y in parse_qs(unicode(decoded_data)).items()})
def parse_dict(self, input_data):
for user_setting_name, user_setting in input_data.items():