[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