Commit 86bb7505 authored by Emmy Vouriot's avatar Emmy Vouriot Committed by Jérome Perrin

str to bytes WIP

parent 63387772
...@@ -32,7 +32,7 @@ import zope.interface ...@@ -32,7 +32,7 @@ import zope.interface
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.Utils import bytes2str from Products.ERP5Type.Utils import bytes2str, str2bytes
from erp5.component.interface.IWatermarkable import IWatermarkable from erp5.component.interface.IWatermarkable import IWatermarkable
from erp5.component.document.Image import Image from erp5.component.document.Image import Image
from erp5.component.document.Document import ConversionError from erp5.component.document.Document import ConversionError
...@@ -291,10 +291,10 @@ class PDFDocument(Image): ...@@ -291,10 +291,10 @@ class PDFDocument(Image):
finally: finally:
tmp.close() tmp.close()
# Quick hack to remove bg color - XXX # Quick hack to remove bg color - XXX
h = command_result.replace('<BODY bgcolor="#A0A0A0"', '<BODY ') h = command_result.replace(b'<BODY bgcolor="#A0A0A0"', b'<BODY ')
# Make links relative # Make links relative
h = h.replace('href="%s.html' % tmp.name.split(os.sep)[-1], h = h.replace(str2bytes('href="%s.html' % tmp.name.split(os.sep)[-1]),
'href="asEntireHTML') b'href="asEntireHTML')
return h return h
security.declarePrivate('_convertToDJVU') security.declarePrivate('_convertToDJVU')
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
############################################################################## ##############################################################################
import re import re
import six
from DateTime import DateTime from DateTime import DateTime
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo
from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter
...@@ -47,7 +48,10 @@ except ImportError: ...@@ -47,7 +48,10 @@ except ImportError:
not installed yet. not installed yet.
""" """
from email import message_from_string if six.PY2:
from email import message_from_string as message_from_x
else:
from email import message_from_bytes as message_from_x
from email.utils import parsedate_tz, mktime_tz from email.utils import parsedate_tz, mktime_tz
DEFAULT_TEXT_FORMAT = 'text/html' DEFAULT_TEXT_FORMAT = 'text/html'
...@@ -170,7 +174,7 @@ class EmailDocument(TextDocument, MailMessageMixin): ...@@ -170,7 +174,7 @@ class EmailDocument(TextDocument, MailMessageMixin):
content_type=self.getContentType(), content_type=self.getContentType(),
embedded_file_list=self.getAggregateValueList(portal_type=document_type_list), embedded_file_list=self.getAggregateValueList(portal_type=document_type_list),
) )
result = message_from_string(data) result = message_from_x(data)
self._v_message = result self._v_message = result
return result return result
......
...@@ -35,6 +35,7 @@ from zLOG import LOG, INFO ...@@ -35,6 +35,7 @@ from zLOG import LOG, INFO
from email.header import decode_header, HeaderParseError from email.header import decode_header, HeaderParseError
import re import re
import six
filename_regexp = 'name="([^"]*)"' filename_regexp = 'name="([^"]*)"'
...@@ -43,6 +44,7 @@ def testCharsetAndConvert(text_content, content_type, encoding): ...@@ -43,6 +44,7 @@ def testCharsetAndConvert(text_content, content_type, encoding):
if encoding is not None: if encoding is not None:
text_content = text_content.decode(encoding).encode('utf-8') text_content = text_content.decode(encoding).encode('utf-8')
else: else:
if six.PY2:
text_content = text_content.decode().encode('utf-8') text_content = text_content.decode().encode('utf-8')
except (UnicodeDecodeError, LookupError): except (UnicodeDecodeError, LookupError):
encoding = guessEncodingFromText(text_content, content_type) encoding = guessEncodingFromText(text_content, content_type)
......
...@@ -37,7 +37,7 @@ from lxml import etree ...@@ -37,7 +37,7 @@ from lxml import etree
from AccessControl.SecurityManagement import newSecurityManager from AccessControl.SecurityManagement import newSecurityManager
from AccessControl import Unauthorized from AccessControl import Unauthorized
from DateTime import DateTime from DateTime import DateTime
from Products.ERP5Type.Utils import convertToUpperCase from Products.ERP5Type.Utils import convertToUpperCase, str2bytes
from Products.ERP5Type.tests.ERP5TypeTestCase import ( from Products.ERP5Type.tests.ERP5TypeTestCase import (
ERP5TypeTestCase, _getConversionServerUrlList) ERP5TypeTestCase, _getConversionServerUrlList)
from Products.CMFCore.WorkflowCore import WorkflowException from Products.CMFCore.WorkflowCore import WorkflowException
...@@ -1944,7 +1944,7 @@ return result ...@@ -1944,7 +1944,7 @@ return result
module = self.portal.document_module module = self.portal.document_module
document = module.newContent(portal_type='File', document = module.newContent(portal_type='File',
property_which_doesnot_exists='Foo', property_which_doesnot_exists='Foo',
data='Hello World!', data=b'Hello World!',
filename='toto.txt') filename='toto.txt')
document.publish() document.publish()
self.tic() self.tic()
...@@ -1959,7 +1959,7 @@ return result ...@@ -1959,7 +1959,7 @@ return result
self.assertEqual(new_doc.getTitle(), 'One title') self.assertEqual(new_doc.getTitle(), 'One title')
self.assertEqual(new_doc.getReference(), 'EFAA') self.assertEqual(new_doc.getReference(), 'EFAA')
self.assertEqual(new_doc.getValidationState(), 'published') self.assertEqual(new_doc.getValidationState(), 'published')
self.assertEqual(new_doc.getData(), 'Hello World!') self.assertEqual(new_doc.getData(), b'Hello World!')
# Migrate a document with url property # Migrate a document with url property
url = new_doc.absolute_url() + '/getData' url = new_doc.absolute_url() + '/getData'
...@@ -1971,7 +1971,7 @@ return result ...@@ -1971,7 +1971,7 @@ return result
new_doc = document.migratePortalType('File') new_doc = document.migratePortalType('File')
self.assertEqual(new_doc.getPortalType(), 'File') self.assertEqual(new_doc.getPortalType(), 'File')
self.assertEqual(new_doc.asURL(), url) self.assertEqual(new_doc.asURL(), url)
self.assertEqual(new_doc.getData(), 'Hello World!') self.assertEqual(new_doc.getData(), b'Hello World!')
self.assertEqual(new_doc.getValidationState(), 'submitted') self.assertEqual(new_doc.getValidationState(), 'submitted')
def test_User_Portal_Type_parameter_is_honoured(self): def test_User_Portal_Type_parameter_is_honoured(self):
...@@ -2031,14 +2031,14 @@ return result ...@@ -2031,14 +2031,14 @@ return result
uri = '%(protocol)s://%(hostname)s' % url_dict uri = '%(protocol)s://%(hostname)s' % url_dict
push_url = '%s%s/newContent' % (uri, self.portal.portal_contributions.getPath(),) push_url = '%s%s/newContent' % (uri, self.portal.portal_contributions.getPath(),)
request = six.moves.urllib.request.Request(push_url, six.moves.urllib.parse.urlencode( request = six.moves.urllib.request.Request(push_url, str2bytes(six.moves.urllib.parse.urlencode(
{'data': data, {'data': data,
'filename': filename, 'filename': filename,
'reference': reference, 'reference': reference,
'disable_cookie_login__': 1, 'disable_cookie_login__': 1,
}), headers={ })), headers={
'Authorization': 'Basic %s' % 'Authorization': 'Basic %s' %
base64.b64encode('ERP5TypeTestCase:') base64.b64encode(b'ERP5TypeTestCase:')
}) })
# disable_cookie_login__ is required to force zope to raise Unauthorized (401) # disable_cookie_login__ is required to force zope to raise Unauthorized (401)
# then HTTPDigestAuthHandler can perform HTTP Authentication # then HTTPDigestAuthHandler can perform HTTP Authentication
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment