[Erp5-report] r40944 nicolas.dumazet - /erp5/trunk/products/ERP5Type/Utils.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 1 03:22:33 CET 2010


Author: nicolas.dumazet
Date: Wed Dec  1 03:22:32 2010
New Revision: 40944

URL: http://svn.erp5.org?rev=40944&view=rev
Log:
make PersistentMigrationMixin more bulletproof

Modified:
    erp5/trunk/products/ERP5Type/Utils.py

Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=40944&r1=40943&r2=40944&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Utils.py [utf8] Wed Dec  1 03:22:32 2010
@@ -902,24 +902,26 @@ class PersistentMigrationMixin(object):
   _no_migration = 0
 
   def __setstate__(self, value):
-    if PersistentMigrationMixin._no_migration:
+    klass = self.__class__
+    if PersistentMigrationMixin._no_migration \
+        or klass.__module__ in ('erp5.portal_type', 'erp5.temp_portal_type'):
       super(PersistentMigrationMixin, self).__setstate__(value)
       return
 
     portal_type = value.get('portal_type')
     if portal_type is None:
-      portal_type = getattr(self.__class__, 'portal_type', None)
+      portal_type = getattr(klass, 'portal_type', None)
     if portal_type is None:
       LOG('ERP5Type', PROBLEM,
           "no portal type was found for %s (class %s)" \
-               % (self, self.__class__))
+               % (self, klass))
       super(PersistentMigrationMixin, self).__setstate__(value)
     else:
       # proceed with migration
       import erp5.portal_type
-      klass = getattr(erp5.portal_type, portal_type)
-      assert self.__class__ != klass
-      self.__class__ = klass
+      newklass = getattr(erp5.portal_type, portal_type)
+      assert self.__class__ != newklass
+      self.__class__ = newklass
       self.__setstate__(value)
       LOG('ERP5Type', TRACE, "Migration for object %s" % self)
 



More information about the Erp5-report mailing list