Merge pull request #5140 from achillesrasquinha/py3

Safe Encoding Decoding helpers to fix bytes to str.
This commit is contained in:
Achilles Rasquinha 2018-03-08 15:12:07 +05:30 committed by GitHub
commit c977c0105d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 4 deletions

View file

@ -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)
@ -1479,4 +1488,4 @@ def safe_decode(param, encoding = 'utf-8'):
def parse_json(val):
from frappe.utils import parse_json
return parse_json(val)
return parse_json(val)

View file

@ -6,7 +6,7 @@ from six.moves import range
import frappe
from six.moves import html_parser as HTMLParser
import smtplib, quopri, json
from frappe import msgprint, throw, _
from frappe import msgprint, throw, _, safe_decode
from frappe.email.smtp import SMTPServer, get_outgoing_email_account
from frappe.email.email_body import get_email, get_formatted_html, add_attachment
from frappe.utils.verified_command import get_signed_params, verify_request
@ -510,7 +510,7 @@ def prepare_message(email, recipient, recipients_list):
message = message.replace("<!--recipient-->", recipient)
message = (message and message.encode('utf8')) or ''
message = frappe.safe_decode(message)
message = safe_decode(message)
if not email.attachments:
return message

View file

@ -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))