From 4c68d5f4b2f0773f32bf066fa1b781d59d6f738f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Thu, 8 Feb 2024 22:00:11 +0900 Subject: [PATCH] persistent_migration: py3 --- product/ERP5Type/dynamic/persistent_migration.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/product/ERP5Type/dynamic/persistent_migration.py b/product/ERP5Type/dynamic/persistent_migration.py index 441069ba425..eeb47e4091c 100644 --- a/product/ERP5Type/dynamic/persistent_migration.py +++ b/product/ERP5Type/dynamic/persistent_migration.py @@ -42,6 +42,9 @@ from persistent import Persistent, wref from ZODB.serialize import ObjectWriter, ObjectReader from Products.ERP5Type import Permissions from Products.ERP5Type.Base import Base, TempBase, WorkflowMethod +from zodbpickle import binary +import six + log = logging.getLogger('ERP5Type') log.trace = lambda *args, **kw: log.log(5, *args, **kw) @@ -96,7 +99,6 @@ class PickleUpdater(ObjectReader, ObjectWriter, object): if _setOb: if isinstance(_setOb, WorkflowMethod): _setOb = _setOb._m - import six if six.get_unbound_function(_setOb) is six.get_unbound_function(OFS_Folder._setOb): self.lazy = Ghost elif klass.__module__[:7] == 'BTrees.' and klass.__name__ != 'Length': @@ -113,8 +115,12 @@ class PickleUpdater(ObjectReader, ObjectWriter, object): self.do_migrate = args != (klass.__module__, klass.__name__) and \ not isOldBTree('%s.%s' % args) unpickler.find_global = self._get_class + if six.PY3: + unpickler.find_class = self._get_class return self._get_class(*args) unpickler.find_global = find_global + if six.PY3: + unpickler.find_class = find_global unpickler.load() # class state = unpickler.load() if isinstance(self.lazy, LazyPersistent): @@ -152,7 +158,7 @@ class PickleUpdater(ObjectReader, ObjectWriter, object): def persistent_id(self, obj): assert type(obj) is not Ghost oid = self.getOid(obj) - if type(oid) is str: + if isinstance(oid, (bytes, binary)): try: return self.oid_dict[oid] except KeyError: -- 2.30.9