From 6979c6d8a1e5307bbde49ccc7690a2372c92f41e Mon Sep 17 00:00:00 2001
From: Julien Muchembled <jm@nexedi.com>
Date: Mon, 20 Sep 2010 13:28:13 +0000
Subject: [PATCH] Generate Zope2.12-like class representation on xml export of
 BTrees objects

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@38488 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/XMLExportImport.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/product/ERP5Type/patches/XMLExportImport.py b/product/ERP5Type/patches/XMLExportImport.py
index c4ad5820ec..00d1459683 100644
--- a/product/ERP5Type/patches/XMLExportImport.py
+++ b/product/ERP5Type/patches/XMLExportImport.py
@@ -14,6 +14,7 @@
 
 # Make sure the xml export will be ordered
 
+import re
 from ZODB.utils import u64, p64
 from Shared.DC.xml import ppml
 from base64 import encodestring
@@ -68,9 +69,11 @@ class OrderedPickler(Pickler):
 from ExtensionClass import Base
 Base__getnewargs__ = getattr(Base, '__getnewargs__', None)
 if Base__getnewargs__ is None:
+  is_old_btree = lambda pickle: None
   def maybeSimplifyClass(klass):
     return klass
 else:
+  is_old_btree = re.compile('cBTrees\\._(..)BTree\n(\\1)BTree\n').match
   def maybeSimplifyClass(klass):
     if isinstance(klass, tuple):
       pureclass, newargs = klass
@@ -122,6 +125,8 @@ def reorderPickle(jar, p):
     obj = unpickler.load()
     pickler.dump(obj)
     p=newp.getvalue()
+    if is_old_btree(p):
+      p = p.replace('_','',1)
     return obj, p
 
 def XMLrecord(oid, plen, p, id_mapping):
-- 
2.30.9