Commit 4e6ad5a8 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki Committed by Arnaud Fontaine

WIP: py2/py3: BusinessTemplate.py.

parent 30ec8d04
...@@ -94,6 +94,10 @@ from importlib import import_module ...@@ -94,6 +94,10 @@ from importlib import import_module
import posixpath import posixpath
import transaction import transaction
import inspect import inspect
if six.PY2:
BufferedReader = file
else:
from io import BufferedReader
import threading import threading
from ZODB.broken import Broken, BrokenModified from ZODB.broken import Broken, BrokenModified
...@@ -344,9 +348,11 @@ class BusinessTemplateArchive(object): ...@@ -344,9 +348,11 @@ class BusinessTemplateArchive(object):
try: try:
write = self._writeFile write = self._writeFile
except AttributeError: except AttributeError:
if not isinstance(obj, str): if not isinstance(obj, (bytes, str)):
obj.seek(0) obj.seek(0)
obj = obj.read() obj = obj.read()
elif not isinstance(obj, bytes):
obj = obj.encode('utf-8')
self.revision.hash(path, obj) self.revision.hash(path, obj)
self._writeString(obj, path) self._writeString(obj, path)
else: else:
...@@ -374,11 +380,8 @@ class BusinessTemplateFolder(BusinessTemplateArchive): ...@@ -374,11 +380,8 @@ class BusinessTemplateFolder(BusinessTemplateArchive):
object_path = os.path.join(self.path, path) object_path = os.path.join(self.path, path)
path = os.path.dirname(object_path) path = os.path.dirname(object_path)
os.path.exists(path) or os.makedirs(path) os.path.exists(path) or os.makedirs(path)
f = open(object_path, 'wb') with open(object_path, 'wb') as f:
try:
f.write(obj) f.write(obj)
finally:
f.close()
def importFiles(self, item): def importFiles(self, item):
""" """
...@@ -919,7 +922,7 @@ class ObjectTemplateItem(BaseTemplateItem): ...@@ -919,7 +922,7 @@ class ObjectTemplateItem(BaseTemplateItem):
else: else:
connection = self.getConnection(self.aq_parent) connection = self.getConnection(self.aq_parent)
__traceback_info__ = 'Importing %s' % file_name __traceback_info__ = 'Importing %s' % file_name
if hasattr(cache_database, 'db') and isinstance(file_obj, file): if hasattr(cache_database, 'db') and isinstance(file_obj, BufferedReader):
obj = connection.importFile(self._compileXML(file_obj)) obj = connection.importFile(self._compileXML(file_obj))
else: else:
# FIXME: Why not use the importXML function directly? Are there any BT5s # FIXME: Why not use the importXML function directly? Are there any BT5s
......
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