chardet requires input to be bytes or bytesarray, but sometimes
frappe.cstr() returns text_type of str without encoding it to utf-8
Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
fixes issues with class objects other than str
Traceback (most recent call last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/doctype/email_account/email_account.py", line 281, in receive
communication = self.insert_communication(msg, args=args)
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/doctype/email_account/email_account.py", line 338, in insert_communication
email = Email(raw)
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/receive.py", line 372, in __init__
self.parse()
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/receive.py", line 393, in parse
self.process_part(part)
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/receive.py", line 445, in process_part
self.text_content += self.get_payload(part)
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/receive.py", line 489, in get_payload
charset = self.get_charset(part)
File "/home/frappe/frappe-bench/apps/frappe/frappe/email/receive.py", line 484, in get_charset
charset = chardet.detect(frappe.safe_encode(part))['encoding']
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/chardet/__init__.py", line 34, in detect
'{0}'.format(type(byte_str)))
TypeError: Expected object of type bytes or bytearray, got: <class 'email.message.Message'>
Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
+existing code, works fine in python 2.7
+in python 3 it breaks
+In python 3 there is change in chardet module and hence the error
+convert-string-to-bytes-in-python-3
+this is also fixed in v11-hotfix branch
* [email] remove style from email so it does not mess up desk
* [fix] tests
* [fix] image parsing, #savedbyatestcase
* [fix] timeout issues in test
* [fix] timeout issues in test
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* dict.iteritems to six.iteritems(dict) for python3 compatibility
* introduces build status for local fork
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range
* converts xrange to range using six.moves.range
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* converts xrange to range using six.moves.range7
* Revert "introduces build status for local fork"
This reverts commit 61f40983d0b3c6725369171ab850a18e5c029cc4.
Mails are not marked as SEEN, when the readonly parameter is True. That's a problem since tickets are being refreshed all few minutes, and, if you have more than 50 unread mails in your inbox, most of them will never be imported to Frappe / ERPNext.