From fc9448922011fb33125a0e02a7b97fcf2837d774 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 15:10:01 +0530 Subject: [PATCH] added safe encode --- frappe/__init__.py | 9 +++++++++ frappe/model/utils/user_settings.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 1b8881a253..20c96e4c60 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -1470,6 +1470,15 @@ def get_version(doctype, name, limit = None, head = False, raise_err = True): def ping(): return "pong" + +def safe_encode(param, encoding = 'utf-8'): + try: + param = param.encode(encoding) + except Exception: + pass + return param + + def safe_decode(param, encoding = 'utf-8'): try: param = param.decode(encoding) diff --git a/frappe/model/utils/user_settings.py b/frappe/model/utils/user_settings.py index 2045e3a5b2..84ae3d9ee7 100644 --- a/frappe/model/utils/user_settings.py +++ b/frappe/model/utils/user_settings.py @@ -39,7 +39,7 @@ def update_user_settings(doctype, user_settings, for_update=False): def sync_user_settings(): '''Sync from cache to database (called asynchronously via the browser)''' for key, data in iteritems(frappe.cache().hgetall('_user_settings')): - doctype, user = key.split('::') + doctype, user = frappe.safe_encode(key).split('::') # WTF? frappe.db.sql('''insert into __UserSettings (user, doctype, data) values (%s, %s, %s) on duplicate key update data=%s''', (user, doctype, data, data))