Commit cc5ea568 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

WIP: py2/py3: BusinessTemplate.py.

parent d3c2f871
...@@ -93,6 +93,10 @@ from difflib import unified_diff ...@@ -93,6 +93,10 @@ from difflib import unified_diff
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
...@@ -343,9 +347,11 @@ class BusinessTemplateArchive(object): ...@@ -343,9 +347,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:
...@@ -373,11 +379,8 @@ class BusinessTemplateFolder(BusinessTemplateArchive): ...@@ -373,11 +379,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):
""" """
...@@ -918,7 +921,7 @@ class ObjectTemplateItem(BaseTemplateItem): ...@@ -918,7 +921,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