Plone 2.1.3 > 3.0.6 upgrade fails with TypeError: unsubscriptable object

31 views Asked by At

When I perform portal_migration in Plone 3.0.6 on a Data.fs from Plone 2.1.3, migration fails with a TypeEror:

Attempting to upgrade from: 2.5-alpha1
Upgrade aborted
Error type: exceptions.TypeError
Error value: unsubscriptable object
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFPlone/MigrationTool.py", line 210, in upgrade newv, msgs = self._upgrade(newv)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFPlone/MigrationTool.py", line 321, in _upgrade res = function(self.aq_parent)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFPlone/migrations/v2_5/alphas.py", line 46, in alpha1_alpha2 installPlonePAS(portal, out)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFPlone/migrations/v2_5/alphas.py", line 66, in installPlonePAS installOrReinstallProduct(portal, 'PlonePAS', out)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFPlone/migrations/migration_util.py", line 85, in installOrReinstallProduct qi.installProduct(product_name, hidden=hidden)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/CMFQuickInstallerTool/QuickInstallerTool.py", line 367, in installProduct res=install(portal)
File "/home/applinet/local/carrieretijger/plone30/plone/installation/lib/python/Products/ExternalMethod/ExternalMethod.py", line 231, in __call__ try: return f(*args, **kw)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PlonePAS/Extensions/Install.py", line 906, in install restoreUserData(portal, out, userdata)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PlonePAS/Extensions/Install.py", line 355, in restoreUserData mtool.addMember(*u[:5])
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PlonePAS/tools/membership.py", line 66, in addMember acl_users._doAddUser(id, password, roles, domains)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PlonePAS/pas.py", line 49, in _doAddUser retval = _old_doAddUser(self, login, password, roles, domains)
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PluggableAuthService/PluggableAuthService.py", line 941, in _doAddUser if useradder.doAddUser( login, password ):
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PluggableAuthService/plugins/ZODBUserManager.py", line 221, in doAddUser self.addUser( login, login, password )
File "/home/applinet/local/carrieretijger/plone30/plone/carrieretijger_plone30/Products/PlonePAS/plugins/user.py", line 68, in addUser if not AuthEncoding.is_encrypted(password):
File "/home/applinet/local/carrieretijger/plone30/plone/installation/lib/python/AccessControl/AuthEncoding.py", line 161, in is_encrypted if pw[:lp] == prefix:
End of upgrade path, migration has finished
The upgrade path did NOT reach current version
Migration has failed

What may cause this and how can I fix it?

1

There are 1 answers

0
René Pijl On

The failure was caused by orphaned member data in the Plone site I was trying to migrate.

Solution: before attempting to migrate, as admin in the ZMI of the plone site, go to portal_memberdata and on the Contents tab click the button Prune orphaned member record. Then copy the Data.fs to the new Plone 3.0 and proceed with the migration.

In my case the migration then succeeded all the way to Plone 3.0.6.