Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Titouan Soulard
erp5
Commits
6015079d
Commit
6015079d
authored
Apr 25, 2022
by
Arnaud Fontaine
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP: 2to3: cStringIO.
parent
94e54af7
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
70 additions
and
72 deletions
+70
-72
bt5/erp5_access_token/TestTemplateItem/portal_components/test.erp5.testERP5AccessToken.py
...teItem/portal_components/test.erp5.testERP5AccessToken.py
+1
-1
bt5/erp5_authentication_policy/TestTemplateItem/portal_components/test.erp5.testAuthenticationPolicy.py
...m/portal_components/test.erp5.testAuthenticationPolicy.py
+4
-4
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testAutoLogout.py
...emplateItem/portal_components/test.erp5.testAutoLogout.py
+3
-3
product/CMFActivity/Activity/Queue.py
product/CMFActivity/Activity/Queue.py
+0
-1
product/DeadlockDebugger/dumper.py
product/DeadlockDebugger/dumper.py
+2
-2
product/ERP5/Document/BusinessTemplate.py
product/ERP5/Document/BusinessTemplate.py
+12
-12
product/ERP5/Tool/TemplateTool.py
product/ERP5/Tool/TemplateTool.py
+3
-3
product/ERP5/Tool/TrashTool.py
product/ERP5/Tool/TrashTool.py
+2
-2
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.TextDocument.py
...plateItem/portal_components/document.erp5.TextDocument.py
+1
-1
product/ERP5/bootstrap/erp5_core/MixinTemplateItem/portal_components/mixin.erp5.BaseConvertableFileMixin.py
.../portal_components/mixin.erp5.BaseConvertableFileMixin.py
+2
-2
product/ERP5/bootstrap/erp5_core/ModuleComponentTemplateItem/portal_components/module.erp5.WebDAVSupport.py
...mplateItem/portal_components/module.erp5.WebDAVSupport.py
+2
-2
product/ERP5/bootstrap/erp5_core/ToolComponentTemplateItem/portal_components/tool.erp5.ContributionTool.py
...plateItem/portal_components/tool.erp5.ContributionTool.py
+2
-2
product/ERP5Form/PDFTemplate.py
product/ERP5Form/PDFTemplate.py
+4
-4
product/ERP5OOo/OOoTemplate.py
product/ERP5OOo/OOoTemplate.py
+2
-2
product/ERP5OOo/OOoUtils.py
product/ERP5OOo/OOoUtils.py
+5
-5
product/ERP5OOo/tests/TestFormPrintoutMixin.py
product/ERP5OOo/tests/TestFormPrintoutMixin.py
+2
-2
product/ERP5OOo/tests/testIngestion.py
product/ERP5OOo/tests/testIngestion.py
+1
-1
product/ERP5OOo/tests/testOOoDynamicStyle.py
product/ERP5OOo/tests/testOOoDynamicStyle.py
+2
-2
product/ERP5OOo/tests/utils.py
product/ERP5OOo/tests/utils.py
+3
-3
product/ERP5Type/Base.py
product/ERP5Type/Base.py
+1
-2
product/ERP5Type/mixin/json_representable.py
product/ERP5Type/mixin/json_representable.py
+3
-3
product/ERP5Type/patches/OFSImage.py
product/ERP5Type/patches/OFSImage.py
+2
-2
product/ERP5Type/patches/urllib_opener.py
product/ERP5Type/patches/urllib_opener.py
+4
-4
product/ERP5Type/tests/ERP5TypeTestCase.py
product/ERP5Type/tests/ERP5TypeTestCase.py
+3
-3
product/ERP5Type/tests/Python3StyleTest.py
product/ERP5Type/tests/Python3StyleTest.py
+2
-2
product/ERP5Type/tests/testDynamicClassGeneration.py
product/ERP5Type/tests/testDynamicClassGeneration.py
+2
-2
No files found.
bt5/erp5_access_token/TestTemplateItem/portal_components/test.erp5.testERP5AccessToken.py
View file @
6015079d
...
...
@@ -438,7 +438,7 @@ class TestERP5DumbHTTPExtractionPlugin(AccessTokenTestCase):
env
[
'GATEWAY_INTERFACE'
]
=
'CGI/1.1 '
env
[
'SCRIPT_NAME'
]
=
'Main'
env
.
update
(
headers
)
return
HTTPRequest
(
io
.
String
IO
(),
env
,
HTTPResponse
())
return
HTTPRequest
(
io
.
Bytes
IO
(),
env
,
HTTPResponse
())
def
test_working_authentication
(
self
):
request
=
self
.
do_fake_request
(
"GET"
,
{
"HTTP_AUTHORIZATION"
:
"Basic "
+
base64
.
b64encode
(
"login:password"
)})
...
...
bt5/erp5_authentication_policy/TestTemplateItem/portal_components/test.erp5.testAuthenticationPolicy.py
View file @
6015079d
...
...
@@ -32,7 +32,7 @@ from functools import partial
import
unittest
import
urllib.request
,
urllib
.
parse
,
urllib
.
error
import
urllib.parse
from
io
import
String
IO
from
io
import
Bytes
IO
import
time
import
http.client
import
mock
...
...
@@ -756,7 +756,7 @@ class TestAuthenticationPolicy(ERP5TypeTestCase):
response
=
self
.
publish
(
portal
.
absolute_url_path
()
+
'/logged_in'
,
basic
=
'test-05:used_ALREADY_1234'
,
stdin
=
String
IO
(
urllib
.
parse
.
urlencode
({
'came_from'
:
'https://www.erp5.com'
})),
stdin
=
Bytes
IO
(
urllib
.
parse
.
urlencode
({
'came_from'
:
'https://www.erp5.com'
})),
request_method
=
'POST'
,
)
redirect_url
=
urllib
.
parse
.
urlparse
(
response
.
getHeader
(
"Location"
))
...
...
@@ -819,7 +819,7 @@ class TestAuthenticationPolicy(ERP5TypeTestCase):
def
submit_reset_password_dialog
(
new_password
):
return
self
.
publish
(
'%s/portal_password'
%
self
.
portal
.
getPath
(),
stdin
=
String
IO
(
urllib
.
parse
.
urlencode
({
stdin
=
Bytes
IO
(
urllib
.
parse
.
urlencode
({
'Base_callDialogMethod:method'
:
''
,
'dialog_id'
:
'PasswordTool_viewResetPassword'
,
'dialog_method'
:
'PasswordTool_changeUserPassword'
,
...
...
@@ -874,7 +874,7 @@ class TestAuthenticationPolicy(ERP5TypeTestCase):
return
self
.
publish
(
'%s/portal_preferences'
%
self
.
portal
.
getPath
(),
basic
=
'%s:current'
%
self
.
id
(),
stdin
=
String
IO
(
urllib
.
parse
.
urlencode
({
stdin
=
Bytes
IO
(
urllib
.
parse
.
urlencode
({
'Base_callDialogMethod:method'
:
''
,
'dialog_id'
:
'PreferenceTool_viewChangePasswordDialog'
,
'dialog_method'
:
'PreferenceTool_setNewPassword'
,
...
...
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testAutoLogout.py
View file @
6015079d
...
...
@@ -29,7 +29,7 @@
##############################################################################
from
functools
import
partial
from
io
import
String
IO
from
io
import
Bytes
IO
import
unittest
import
urllib.request
,
urllib
.
parse
,
urllib
.
error
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
...
...
@@ -81,7 +81,7 @@ class TestAuoLogout(ERP5TypeTestCase):
portal
.
absolute_url_path
()
+
'/view'
,
request_method
=
'POST'
,
)
response
=
publish
(
stdin
=
String
IO
(
stdin
))
response
=
publish
(
stdin
=
Bytes
IO
(
stdin
))
self
.
assertIn
(
'Welcome to ERP5'
,
response
.
getBody
())
# check '__ac' cookie has set an expire timeout
...
...
@@ -96,7 +96,7 @@ class TestAuoLogout(ERP5TypeTestCase):
self
.
tic
()
portal
.
portal_caches
.
clearAllCache
()
response
=
publish
(
stdin
=
String
IO
(
stdin
))
response
=
publish
(
stdin
=
Bytes
IO
(
stdin
))
self
.
assertIn
(
'Welcome to ERP5'
,
response
.
getBody
())
ac_cookie
=
response
.
getCookie
(
'__ac'
)
self
.
assertNotEqual
(
ac_cookie
,
None
)
...
...
product/CMFActivity/Activity/Queue.py
View file @
6015079d
...
...
@@ -31,7 +31,6 @@ from hashlib import sha1
from
DateTime
import
DateTime
from
zLOG
import
LOG
,
WARNING
,
ERROR
from
ZODB.POSException
import
ConflictError
from
io
import
BytesIO
as
StringIO
# Time global parameters
MAX_PROCESSING_TIME
=
900
# in seconds
...
...
product/DeadlockDebugger/dumper.py
View file @
6015079d
...
...
@@ -27,7 +27,7 @@ import _thread
from
sys
import
_current_frames
import
traceback
import
time
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
from
zLOG
import
LOG
,
DEBUG
,
ERROR
from
App.config
import
getConfiguration
...
...
@@ -76,7 +76,7 @@ def dump_threads():
except
ImportError
:
pass
output
=
String
IO
()
output
=
Bytes
IO
()
traceback
.
print_stack
(
frame
,
file
=
output
)
res
.
append
(
"Thread %s%s:
\
n
%s%s"
%
(
thread_id
,
reqinfo
,
output
.
getvalue
(),
mysql_info
))
...
...
product/ERP5/Document/BusinessTemplate.py
View file @
6015079d
...
...
@@ -75,7 +75,7 @@ from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
from
OFS.Traversable
import
NotFound
from
OFS
import
SimpleItem
from
OFS.Image
import
Pdata
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
from
copy
import
deepcopy
from
zExceptions
import
BadRequest
from
Products.ERP5Type.XMLExportImport
import
exportXML
...
...
@@ -355,7 +355,7 @@ class BusinessTemplateArchive(object):
else
:
if
isinstance
(
obj
,
str
):
self
.
revision
.
hash
(
path
,
obj
)
obj
=
String
IO
(
obj
)
obj
=
Bytes
IO
(
obj
)
else
:
obj
.
seek
(
0
)
self
.
revision
.
hash
(
path
,
obj
.
read
())
...
...
@@ -420,7 +420,7 @@ class BusinessTemplateTarball(BusinessTemplateArchive):
def
__init__
(
self
,
path
,
creation
=
0
,
importing
=
0
,
**
kw
):
super
(
BusinessTemplateTarball
,
self
).
__init__
(
path
,
**
kw
)
if
creation
:
self
.
fobj
=
String
IO
()
self
.
fobj
=
Bytes
IO
()
self
.
tar
=
tarfile
.
open
(
''
,
'w:gz'
,
self
.
fobj
)
self
.
time
=
time
.
time
()
elif
importing
:
...
...
@@ -849,7 +849,7 @@ class ObjectTemplateItem(BaseTemplateItem):
if
not
extension
:
extension
=
self
.
guessExtensionOfDocument
(
obj
,
key
,
data
if
record_id
==
'data'
else
None
)
bta
.
addObject
(
String
IO
(
data
),
key
,
path
=
path
,
bta
.
addObject
(
Bytes
IO
(
data
),
key
,
path
=
path
,
ext
=
'._xml'
if
extension
==
'xml'
else
'.'
+
extension
)
break
# since we get the obj from context we should
...
...
@@ -857,7 +857,7 @@ class ObjectTemplateItem(BaseTemplateItem):
obj
=
self
.
removeProperties
(
obj
,
1
,
keep_workflow_history
=
True
)
transaction
.
savepoint
(
optimistic
=
True
)
f
=
String
IO
()
f
=
Bytes
IO
()
exportXML
(
obj
.
_p_jar
,
obj
.
_p_oid
,
f
)
bta
.
addObject
(
f
,
key
,
path
=
path
)
...
...
@@ -1010,7 +1010,7 @@ class ObjectTemplateItem(BaseTemplateItem):
key
=
'%s:%s'
%
(
name
,
mtime
)
try
:
return
String
IO
(
cache_database
.
db
[
key
])
return
Bytes
IO
(
cache_database
.
db
[
key
])
except
:
pass
...
...
@@ -1018,7 +1018,7 @@ class ObjectTemplateItem(BaseTemplateItem):
from
Products.ERP5Type.XMLExportImport
import
(
ppml
,
start_zopedata
,
save_record
,
save_zopedata
)
import
xml.parsers.expat
outfile
=
String
IO
()
outfile
=
Bytes
IO
()
try
:
data
=
file
.
read
()
F
=
ppml
.
xmlPickler
()
...
...
@@ -1067,8 +1067,8 @@ class ObjectTemplateItem(BaseTemplateItem):
for
path
,
old_object
in
upgrade_list
:
# compare object to see it there is changes
new_object
=
self
.
_objects
[
path
]
new_io
=
String
IO
()
old_io
=
String
IO
()
new_io
=
Bytes
IO
()
old_io
=
Bytes
IO
()
exportXML
(
new_object
.
_p_jar
,
new_object
.
_p_oid
,
new_io
)
new_obj_xml
=
new_io
.
getvalue
()
try
:
...
...
@@ -1107,7 +1107,7 @@ class ObjectTemplateItem(BaseTemplateItem):
for
subobject_id
in
obj
.
objectIds
():
subobject
=
obj
[
subobject_id
]
subobject_dict
[
subobject_id
]
=
subobject
.
_p_jar
.
exportFile
(
subobject
.
_p_oid
,
String
IO
())
subobject
.
_p_oid
,
Bytes
IO
())
return
subobject_dict
# XXX btsave is for backward compatibility
if
action
in
(
'backup'
,
'btsave'
,
'save_and_remove'
,):
...
...
@@ -6161,8 +6161,8 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_test_item'
,
'_message_translation_item'
,]
if
item_name
in
item_list_1
:
f1
=
String
IO
()
# for XML export of New Object
f2
=
String
IO
()
# For XML export of Installed Object
f1
=
Bytes
IO
()
# for XML export of New Object
f2
=
Bytes
IO
()
# For XML export of Installed Object
# Remove unneeded properties
new_object
=
new_item
.
removeProperties
(
new_object
,
1
)
installed_object
=
installed_item
.
removeProperties
(
installed_object
,
1
)
...
...
product/ERP5/Tool/TemplateTool.py
View file @
6015079d
...
...
@@ -48,7 +48,7 @@ from Products.ERP5.genbt5list import generateInformation
from
Acquisition
import
aq_base
from
tempfile
import
mkstemp
,
mkdtemp
from
Products.ERP5
import
_dtmldir
from
io
import
String
IO
from
io
import
Bytes
IO
from
urllib.request
import
pathname2url
,
urlopen
,
urlretrieve
from
urllib.parse
import
splittype
import
urllib.request
,
urllib
.
error
,
urllib
.
parse
...
...
@@ -305,7 +305,7 @@ class TemplateTool (BaseTool):
bt
=
Resource
(
url
)
export_string
=
bt
.
get
().
get_body
()
self
.
deleteContent
(
id
)
self
.
_importObjectFromFile
(
String
IO
(
export_string
),
id
=
id
)
self
.
_importObjectFromFile
(
Bytes
IO
(
export_string
),
id
=
id
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'manage_download'
)
def
manage_download
(
self
,
url
,
id
=
None
,
REQUEST
=
None
):
...
...
@@ -395,7 +395,7 @@ class TemplateTool (BaseTool):
"""
Import Business Template from passed base64 encoded text.
"""
import_file =
String
IO(decodestring(file_data))
import_file =
Bytes
IO(decodestring(file_data))
return self.importFile(import_file = import_file, id = id, REQUEST = REQUEST,
batch_mode = batch_mode, **kw)
...
...
product/ERP5/Tool/TrashTool.py
View file @
6015079d
...
...
@@ -38,7 +38,7 @@ from zExceptions import BadRequest
from
zLOG
import
LOG
,
WARNING
from
DateTime
import
DateTime
from
Acquisition
import
aq_base
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
class
TrashTool
(
BaseTool
):
"""
...
...
@@ -146,7 +146,7 @@ class TrashTool(BaseTool):
for
subobject_id
in
list
(
obj
.
objectIds
()):
subobject
=
obj
[
subobject_id
]
subobjects_dict
[
subobject_id
]
=
subobject
.
_p_jar
.
exportFile
(
subobject
.
_p_oid
,
String
IO
())
subobject
.
_p_oid
,
Bytes
IO
())
if
save
:
# remove subobjecs from backup object
obj
.
_delObject
(
subobject_id
)
...
...
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.TextDocument.py
View file @
6015079d
...
...
@@ -174,7 +174,7 @@ class TextDocument(CachedConvertableMixin, BaseConvertableFileMixin, TextContent
# Include extra parameter for image conversions
temp_image
=
self
.
portal_contributions
.
newContent
(
portal_type
=
'Image'
,
file
=
io
.
String
IO
(),
file
=
io
.
Bytes
IO
(),
filename
=
self
.
getId
(),
temp_object
=
1
)
temp_image
.
_setData
(
result
)
...
...
product/ERP5/bootstrap/erp5_core/MixinTemplateItem/portal_components/mixin.erp5.BaseConvertableFileMixin.py
View file @
6015079d
...
...
@@ -31,7 +31,7 @@ from AccessControl import ClassSecurityInfo
from
Products.ERP5Type.Globals
import
InitializeClass
from
Products.ERP5Type
import
Permissions
from
OFS.Image
import
Pdata
from
io
import
String
IO
from
io
import
Bytes
IO
_MARKER
=
object
()
class
BaseConvertableFileMixin
:
...
...
@@ -96,7 +96,7 @@ class BaseConvertableFileMixin:
"""Wrap value into Pdata
"""
if
not
isinstance
(
data
,
Pdata
)
and
data
is
not
None
:
file_
=
String
IO
(
data
)
file_
=
Bytes
IO
(
data
)
data
,
_
=
self
.
_read_data
(
file_
)
self
.
_baseSetBaseData
(
data
)
...
...
product/ERP5/bootstrap/erp5_core/ModuleComponentTemplateItem/portal_components/module.erp5.WebDAVSupport.py
View file @
6015079d
...
...
@@ -23,7 +23,7 @@ from Products.ERP5Type.Globals import InitializeClass
from
Products.ERP5Type
import
Permissions
from
Products.CMFCore.PortalContent
import
ResourceLockedError
from
zExceptions
import
Forbidden
from
io
import
String
IO
from
io
import
Bytes
IO
security
=
ModuleSecurityInfo
(
__name__
)
...
...
@@ -77,7 +77,7 @@ class TextContent:
headers
=
self
.
parseHeadersFromText
(
body
)
content_type
=
REQUEST
.
get_header
(
'Content-Type'
,
''
)
headers
.
setdefault
(
'content_type'
,
content_type
)
headers
[
'file'
]
=
String
IO
(
body
)
headers
[
'file'
]
=
Bytes
IO
(
body
)
self
.
_edit
(
**
headers
)
except
ResourceLockedError
:
transaction
.
abort
()
...
...
product/ERP5/bootstrap/erp5_core/ToolComponentTemplateItem/portal_components/tool.erp5.ContributionTool.py
View file @
6015079d
...
...
@@ -168,7 +168,7 @@ class ContributionTool(BaseTool):
except
KeyError
:
raise
ValueError
(
'data must be provided'
)
if
data
is
not
None
:
file_object
=
io
.
String
IO
()
file_object
=
io
.
Bytes
IO
()
file_object
.
write
(
data
)
file_object
.
seek
(
0
)
kw
[
'file'
]
=
file_object
...
...
@@ -638,7 +638,7 @@ class ContributionTool(BaseTool):
url_file
=
urllib
.
request
.
urlopen
(
urllib
.
request
.
Request
(
url
,
headers
=
{
'Accept'
:
'*/*'
}))
data
=
url_file
.
read
()
# time out must be set or ... too long XXX
file_object
=
io
.
String
IO
()
file_object
=
io
.
Bytes
IO
()
file_object
.
write
(
data
)
file_object
.
seek
(
0
)
# if a content-disposition header is present,
...
...
product/ERP5Form/PDFTemplate.py
View file @
6015079d
...
...
@@ -220,7 +220,7 @@ if ReportTool:
from
Products.CMFReportTool.RenderPDF.Parser
import
TemplateParser
,
DocumentParser
from
Products.PageTemplates.Expressions
import
boboAwareZopeTraverse
from
io
import
String
IO
from
io
import
Bytes
IO
import
xml.dom.minidom
import
urllib.request
,
urllib
.
parse
,
urllib
.
error
,
os
.
path
...
...
@@ -254,7 +254,7 @@ if ReportTool:
elif
hasattr
(
obj
,
'data'
):
obj
=
obj
.
data
return
String
IO
(
str
(
obj
))
return
Bytes
IO
(
str
(
obj
))
else
:
class
ERP5ResourceHandler
(
ResourceHandler
):
''' Wrapper for ZODB Resources and files'''
...
...
@@ -287,7 +287,7 @@ if ReportTool:
elif
hasattr
(
obj
,
'data'
):
obj
=
obj
.
data
return
String
IO
(
str
(
obj
))
return
Bytes
IO
(
str
(
obj
))
...
...
@@ -329,7 +329,7 @@ if ReportTool:
document
=
DocumentParser
(
document_dom
,
encoding
,
resourceHandler
=
rhandler
)
# create the PDF itself using the document and the template
buf
=
String
IO
()
buf
=
Bytes
IO
()
document
(
template
,
buf
)
buf
.
seek
(
0
)
return
buf
.
read
()
...
...
product/ERP5OOo/OOoTemplate.py
View file @
6015079d
...
...
@@ -43,7 +43,7 @@ from Acquisition import aq_base
from
AccessControl
import
ClassSecurityInfo
from
.OOoUtils
import
OOoBuilder
from
zipfile
import
ZipFile
,
ZIP_DEFLATED
from
io
import
String
IO
from
io
import
Bytes
IO
import
re
import
itertools
import
six
...
...
@@ -225,7 +225,7 @@ class OOoTemplate(ZopePageTemplate):
self
.
OLE_documents_zipstring
=
None
# create a zip archive and store it
if
attached_files_list
:
memory_file
=
String
IO
()
memory_file
=
Bytes
IO
()
try
:
zf
=
ZipFile
(
memory_file
,
mode
=
'w'
,
compression
=
ZIP_DEFLATED
)
except
RuntimeError
:
...
...
product/ERP5OOo/OOoUtils.py
View file @
6015079d
...
...
@@ -37,7 +37,7 @@ from xml.dom import Node
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type.Globals
import
InitializeClass
,
get_request
from
zipfile
import
ZipFile
,
ZIP_DEFLATED
from
io
import
String
IO
from
io
import
Bytes
IO
import
imghdr
import
random
from
Products.ERP5Type
import
Permissions
...
...
@@ -73,7 +73,7 @@ class OOoBuilder(Implicit):
def
__init__
(
self
,
document
):
if
hasattr
(
document
,
'data'
)
:
self
.
_document
=
String
IO
()
self
.
_document
=
Bytes
IO
()
if
isinstance
(
document
.
data
,
Pdata
):
# Handle image included in the style
...
...
@@ -88,7 +88,7 @@ class OOoBuilder(Implicit):
elif
hasattr
(
document
,
'read'
)
:
self
.
_document
=
document
else
:
self
.
_document
=
String
IO
()
self
.
_document
=
Bytes
IO
()
self
.
_document
.
write
(
document
)
self
.
_image_count
=
0
self
.
_manifest_additions_list
=
[]
...
...
@@ -143,7 +143,7 @@ class OOoBuilder(Implicit):
- indent the xml
"""
content_xml
=
self
.
extract
(
ooo_xml_file_id
)
output
=
String
IO
()
output
=
Bytes
IO
()
content_doc
=
etree
.
XML
(
content_xml
)
root
=
content_doc
.
getroottree
().
getroot
()
#Declare zope namespaces
...
...
@@ -232,7 +232,7 @@ class OOoParser(Implicit):
self
.
filename
=
None
def
openFromString
(
self
,
text_content
):
return
self
.
openFile
(
String
IO
(
text_content
))
return
self
.
openFile
(
Bytes
IO
(
text_content
))
def
openFile
(
self
,
file_descriptor
):
"""
...
...
product/ERP5OOo/tests/TestFormPrintoutMixin.py
View file @
6015079d
...
...
@@ -32,7 +32,7 @@
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
from
AccessControl.SecurityManagement
import
newSecurityManager
from
io
import
String
IO
from
io
import
Bytes
IO
class
TestFormPrintoutMixin
(
ERP5TypeTestCase
):
run_all_test
=
1
...
...
@@ -55,7 +55,7 @@ class TestFormPrintoutMixin(ERP5TypeTestCase):
'''return odf document from the printout
'''
document_file
=
getattr
(
self
.
portal
,
printout_form
.
template
,
None
)
document_file
=
String
IO
(
document_file
).
read
()
document_file
=
Bytes
IO
(
document_file
).
read
()
if
document_file
is
not
None
:
return
document_file
raise
ValueError
(
'%s template not found'
%
printout_form
.
template
)
...
...
product/ERP5OOo/tests/testIngestion.py
View file @
6015079d
...
...
@@ -2108,7 +2108,7 @@ class Base_contributeMixin:
"""
person
=
self
.
portal
.
person_module
.
newContent
(
portal_type
=
'Person'
)
empty_file_upload
=
ZPublisher
.
HTTPRequest
.
FileUpload
(
FieldStorage
(
fp
=
io
.
String
IO
(),
fp
=
io
.
Bytes
IO
(),
environ
=
dict
(
REQUEST_METHOD
=
'PUT'
),
headers
=
{
"content-disposition"
:
"attachment; filename=empty;"
}))
...
...
product/ERP5OOo/tests/testOOoDynamicStyle.py
View file @
6015079d
...
...
@@ -29,7 +29,7 @@
import
os
import
unittest
from
io
import
String
IO
from
io
import
Bytes
IO
from
zipfile
import
ZipFile
from
Products.ERP5Type.tests.utils
import
FileUpload
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
...
...
@@ -237,7 +237,7 @@ return getattr(context, "%s_%s" % (parameter, current_language))
response
.
getHeader
(
'content-type'
).
split
(
';'
)[
0
])
self
.
assertEqual
(
'attachment; filename="Base_viewIncludeImageAsOdt.odt"'
,
response
.
getHeader
(
'content-disposition'
))
cs
=
String
IO
()
cs
=
Bytes
IO
()
cs
.
write
(
body
)
zip_document
=
ZipFile
(
cs
)
picture_list
=
[
x
for
x
in
zip_document
.
infolist
()
if
"Pictures"
in
x
.
filename
]
...
...
product/ERP5OOo/tests/utils.py
View file @
6015079d
...
...
@@ -40,7 +40,7 @@ import tempfile
import
zipfile
import
popen2
import
urllib.request
,
urllib
.
error
,
urllib
.
parse
from
io
import
String
IO
from
io
import
Bytes
IO
try
:
import
lxml
...
...
@@ -65,14 +65,14 @@ if lxml:
def
validate
(
self
,
odf_file_content
):
error_list
=
[]
odf_file
=
String
IO
(
odf_file_content
)
odf_file
=
Bytes
IO
(
odf_file_content
)
for
f
in
(
'content.xml'
,
'meta.xml'
,
'styles.xml'
,
'settings.xml'
):
error_list
.
extend
(
self
.
_validateXML
(
odf_file
,
f
))
return
error_list
def
_validateXML
(
self
,
odf_file
,
content_file_name
):
zfd
=
zipfile
.
ZipFile
(
odf_file
)
doc
=
lxml
.
etree
.
parse
(
String
IO
(
zfd
.
read
(
content_file_name
)))
doc
=
lxml
.
etree
.
parse
(
Bytes
IO
(
zfd
.
read
(
content_file_name
)))
return
[]
# The following is the past implementation that validates with
# RelaxNG schema. But recent LibreOffice uses extended odf
...
...
product/ERP5Type/Base.py
View file @
6015079d
...
...
@@ -94,7 +94,6 @@ from zope.interface import classImplementsOnly, implementedBy
import
sys
,
re
from
io
import
BytesIO
as
StringIO
from
socket
import
gethostname
,
gethostbyaddr
import
random
...
...
@@ -2158,7 +2157,7 @@ class Base(
# We must do an ordered list so we can not use the previous method
# self._setValue(id, self.portal_catalog.getObjectList(uids), spec=spec)
references
=
[
self
.
getPortalObject
().
portal_catalog
.
getObject
(
x
)
for
x
in
((
uids
,)
if
isinstance
(
uids
,
int
)
else
uids
)]
for
x
in
((
uids
,)
if
isinstance
(
uids
,
six
.
integer_types
)
else
uids
)]
self
.
_setValue
(
id
,
references
,
spec
=
spec
,
filter
=
filter
,
portal_type
=
portal_type
,
keep_default
=
keep_default
,
checked_permission
=
checked_permission
)
...
...
product/ERP5Type/mixin/json_representable.py
View file @
6015079d
...
...
@@ -37,7 +37,7 @@ except ImportError:
DeprecationWarning
)
import
zope.interface
from
Products.ERP5Type
import
XMLExportImport
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type.interfaces.json_representable
import
IJSONRepresentable
from
Products.ERP5Type
import
Permissions
...
...
@@ -71,7 +71,7 @@ class JSONRepresentableMixin:
Gets the dict representation of the object
"""
# Use OFS exportXML to first export to xml
f
=
String
IO
()
f
=
Bytes
IO
()
XMLExportImport
.
exportXML
(
self
.
_p_jar
,
self
.
_p_oid
,
f
)
# Get the value of exported XML
...
...
@@ -88,7 +88,7 @@ class JSONRepresentableMixin:
# Convert the dict_value to XML representation
xml_value
=
xmltodict
.
unparse
(
dict_value
)
f
=
String
IO
(
xml_value
)
f
=
Bytes
IO
(
xml_value
)
return
XMLExportImport
.
importXML
(
self
.
_p_jar
,
f
)
InitializeClass
(
JSONRepresentableMixin
)
product/ERP5Type/patches/OFSImage.py
View file @
6015079d
...
...
@@ -18,7 +18,7 @@
"""
import
OFS.Image
import
struct
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
from
zExceptions
import
Forbidden
def
getImageInfo_with_svg_fix
(
data
):
...
...
@@ -57,7 +57,7 @@ def getImageInfo_with_svg_fix(data):
# handle JPEGs
elif
(
size
>=
2
)
and
(
data
[:
2
]
==
'
\
377
\
330
'
):
content_type
=
'image/jpeg'
jpeg
=
String
IO
(
data
)
jpeg
=
Bytes
IO
(
data
)
jpeg
.
read
(
2
)
b
=
jpeg
.
read
(
1
)
try
:
...
...
product/ERP5Type/patches/urllib_opener.py
View file @
6015079d
...
...
@@ -30,7 +30,7 @@
# Install openers
# -> testTemplateTool.TestTemplateTool.test_getBusinessTemplateUrl
import
urllib.request
,
urllib
.
parse
,
urllib
.
error
from
io
import
BytesIO
as
StringIO
from
io
import
BytesIO
import
socket
import
os
import
mimetypes
...
...
@@ -72,7 +72,7 @@ class DirectoryFileHandler(urllib.request.FileHandler):
size
=
stats
.
st_size
modified
=
formatdate
(
stats
.
st_mtime
,
usegmt
=
True
)
mtype
=
mimetypes
.
guess_type
(
file
)[
0
]
headers
=
message_from_bytes
(
String
IO
(
headers
=
message_from_bytes
(
Bytes
IO
(
'Content-type: %s
\
n
Content-length: %d
\
n
Last-modified: %s
\
n
'
%
(
mtype
or
'text/plain'
,
size
,
modified
)))
if
host
:
...
...
@@ -81,14 +81,14 @@ class DirectoryFileHandler(urllib.request.FileHandler):
(
not
port
and
socket
.
gethostbyname
(
host
)
in
self
.
get_names
()):
try
:
file_list
=
os
.
listdir
(
localfile
)
s
=
String
IO
()
s
=
Bytes
IO
()
s
.
write
(
'<html><head><base href="%s"/></head><body>'
%
(
'file:'
+
file
))
s
.
write
(
'<p>Directory Content:</p>'
)
for
f
in
file_list
:
s
.
write
(
'<p><a href="%s">%s</a></p>
\
n
'
%
(
urllib
.
parse
.
quote
(
f
),
f
))
s
.
write
(
'</body></html>'
)
s
.
seek
(
0
)
headers
=
message_from_bytes
(
String
IO
(
headers
=
message_from_bytes
(
Bytes
IO
(
'Content-type: %s
\
n
Content-length: %d
\
n
Last-modified: %s
\
n
'
%
(
'text/html'
,
size
,
modified
)))
return
urllib2
.
addinfourl
(
s
,
headers
,
'file:'
+
file
)
...
...
product/ERP5Type/tests/ERP5TypeTestCase.py
View file @
6015079d
...
...
@@ -20,7 +20,7 @@ import time
import
traceback
import
urllib.request
,
urllib
.
parse
,
urllib
.
error
from
contextlib
import
contextmanager
from
io
import
String
IO
from
io
import
Bytes
IO
from
six.moves
import
configparser
from
six.moves.cPickle
import
dumps
from
glob
import
glob
...
...
@@ -824,9 +824,9 @@ class ERP5TypeTestCaseMixin(ProcessingNodeTestCase, PortalTestCase):
return
orig_extractUserIds
(
pas
,
request
,
plugins
)
if
stdin
is
None
:
stdin
=
String
IO
()
stdin
=
Bytes
IO
()
outstream
=
String
IO
()
outstream
=
Bytes
IO
()
response
=
Response
(
stdout
=
outstream
,
stderr
=
sys
.
stderr
)
try
:
...
...
product/ERP5Type/tests/Python3StyleTest.py
View file @
6015079d
...
...
@@ -30,7 +30,7 @@
import
os
,
sys
import
unittest
from
subprocess
import
check_output
,
CalledProcessError
from
io
import
String
IO
from
io
import
Bytes
IO
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
from
lib2to3.main
import
main
...
...
@@ -67,7 +67,7 @@ class Python3StyleTest(ERP5TypeTestCase):
path
=
os
.
path
.
normpath
(
path
+
os
.
environ
[
'TESTED_PRODUCT'
])
orig_stdout
=
sys
.
stdout
try
:
# XXX: not thread-safe
sys
.
stdout
=
stdout
=
String
IO
()
sys
.
stdout
=
stdout
=
Bytes
IO
()
returncode
=
main
(
"lib2to3.fixes"
,
[
"--fix"
,
fixer_name
,
path
])
finally
:
sys
.
stdout
=
orig_stdout
...
...
product/ERP5Type/tests/testDynamicClassGeneration.py
View file @
6015079d
...
...
@@ -2781,8 +2781,8 @@ class TestGC(XMLObject):
import
gc
initial_gc_debug_flags
=
gc
.
get_debug
()
initial_stderr
=
sys
.
stderr
from
io
import
String
IO
stderr
=
String
IO
()
from
io
import
Bytes
IO
stderr
=
Bytes
IO
()
try
:
gc
.
disable
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment