Upgrade to 5.2 failing with 'IATCTTool' has no attribute '__iro__'

I migrated from 4.3 to 5.1 and then to 5.2-python2. I had to delete several product objects that didn't have support for Plone 5.1 and 5.2 at the time (collective.cover, PloneFormGen, Plone True Gallery, Reset Password Tool), I also used wildcard.fixpersistentutilities and @atct_migrator. I had to add wiked and Plone [archetypes] in buildout.cfg in version 5.2-python2. I had to uninstall Products.Archetypes and plone.app.collections for each site using portal_quickinstaler, in addition to deleting the folders portal_atct, portal_factory, portal_languages, and portal_tinymce.

So far everything has worked on Plone 5.2-python2, but I haven't been able to migrate to version 5.2-python3. I was able to run zodbupdate after adding wicked, Plone [archetypes] and eea.aliases to [buildout] eggs, but when I start Plone 5.2-python3 there are several errors like "AttributeError: type object 'IATCTTool' has no attribute 'iro' ".

I returned to Plone 5.2-python2 and followed the procedure described by fulv, getting the following error messages:

  • pleonformgen - ERROR: Step pleonformgen has an invalid import handler
    toolset: Toolset imported.
  • languagetool - ERROR: Step languagetool has an invalid import handler
    toolset: Toolset imported.
  • collective.plonetruegallery.install - ERROR: Step collective.plonetruegallery.install has an invalid import handler
    collective.plonetruegallery.uninstall - ERROR: Step collective.plonetruegallery.uninstall has an invalid import handler
  • collective.portlet.calendar-upgrades - ERROR: Step collective.portlet.calendar-upgrades has an invalid import handler
  • collective.z3cform.datetimewidget - ERROR: Step collective.z3cform.datetimewidget has an invalid import handler

When I run zodbupdate and start Plone 5.2-python 3 there are still errors (AttributeError: type object 'IATCTTool' has no attribute 'iro' ) and Plone does not work.

Can someone help me?

How do I execute the script reported by @pbauer (Aug '19)? Do I save it to a clean_plone.py file and run "bin/instance run /plone/instance/clean_plone.py"?

This did not work for me. I got the following error messages:

Traceback (most recent call last):
    File "/plone/instance/parts/instance/bin/interpreter", line 287, in <module>
        exec(_val)
    File "<string>", line 1, in <module>
    File "/plone/instance/clean_plone.py", line 15, in <module>
        portal.manage_delObjects([tool])
NameError: name 'portal' is not defined

All the code in https://github.com/collective/collective.migrationhelpers is meant to be used in your own upgrade-steps. If you don't know what that means I suggest you read https://training.plone.org/5/mastering-plone/dexterity_2.html#upgrade-steps and https://docs.plone.org/develop/addons/components/genericsetup.html#upgrade-steps.

Simple examples how they are used in real life for upgrade-steps that migrated https://www.plone.de from Plone 4.3 to 5.2 can be found in https://github.com/collective/plonesite.de/blob/master/src/plonede.policy/plonede/policy/upgrades.zcml and https://github.com/collective/plonesite.de/blob/master/src/plonede.policy/plonede/policy/upgrades.py.

More examples are mentioned in Small project migration with customized barceloneta.

Errors like this typically indicate that the definition of the reference interface is not available. I would not be surprised as ATCT refers to "ArcheType based Content Types" and as far as I know, there is not Python 3 compatible Archetypes version. Eliminate Archetypes (migrating to dexterity) before you switch to Python 3.

@@atct_migrator shows that there is no content to be migrated for all sites in Plone 5.2-python2.

I think atct_migrator only shows the default content types.

You could try /@@custom_migration and see if there is something there.

/@@custom_migration also shows that there is no content to migrate.

Thank you, @pbauer.

I'm trying to use https://github.com/collective/collective.migrationhelpers to clean up the sites. I ran a few things on Plone 5.2-python2 to try to clean up, but when I run zodbverify the following errors still appear:

2020-02-20 14:59:33,844 INFO    [zodbverify:64][MainThread]                                                                                                                                                                                                                    
Could not process unknown record '\x00\x00\x00\x00\x00\xa3sP':                                                                                                                                                                                                                 
2020-02-20 14:59:33,844 INFO    [zodbverify:65][MainThread] '\x80\x02cProducts.ResourceRegistries.tools.CSSRegistry\nStylesheet\nq\x01.\x80\x02}q\x02(U\x05_dataq\x03U\x08\x00\x00\x00\x00\x00\xa3sQq\x04cPersistence.mapping\nPersistentMapping\nq\x05\x86QU\nisExternalq\x06\x89u.'                                                                                                                                                                                                                                                                         
2020-02-20 14:59:33,844 INFO    [zodbverify:66][MainThread] Traceback (most recent call last):                                                                                                                                                                                 
File "/plone/buildout-cache/eggs/zodbverify-1.0.1-py2.7.egg/zodbverify/verify.py", line 58, in verify_record                                                                                                                                                                 
    class_info = unpickler.load()                                                                                                                                                                                                                                              
AttributeError: 'module' object has no attribute 'Stylesheet'                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                            
2020-02-20 14:59:35,259 INFO    [zodbverify:48][MainThread] Done! Scanned 2533605 records.                                                                                                                                                                                     
Found 1047 records that could not be loaded.                                                                                                                                                                                                                                   
Exceptions and how often they happened: 
ImportError: No module named controlpanel.markup: 5
ImportError: No module named blocks.interfaces: 5
ImportError: No module named Product: 2
ImportError: No module named tiles.modifiers: 5
AttributeError: 'module' object has no attribute 'Stylesheet': 307
AttributeError: 'module' object has no attribute 'JavaScript': 428
ImportError: No module named piwik.core.interfaces: 3
ImportError: No module named js.jqueryui.controlpanel: 288
ImportError: No module named cover.content: 4

Can I remove these 1047 records in Plone 5.2-python2? How can I do this?

Uninstalling Products.Archetypes and plone.app.collections for each site using portal_quickinstaler again, in addition to deleting the folders 'portal_languages', 'portal_tinymce', 'kupu_library_tool', 'kupu_library_tool', 'portal_factory', 'portal_atct', 'uid_cct', 'uid_cctatal' , 'archetype_tool', 'reference_catalog' and 'portal_metadata', the following errors remain:

2020-02-21 12:49:48,330 INFO    [zodbverify:64][MainThread] 
Could not process <class 'plone.registry.field.Bool'> record '\x00\x00\x00\x00\x00\x81\x07\xee':
2020-02-21 12:49:48,330 INFO    [zodbverify:65][MainThread] 'cplone.registry.field\nBool\nq\x01.}q\x02(U\x17_Element__tagged_valuesq\x03}q\x04U\x0bdescriptionq\x05X\x00\x00\x00\x00U\x05titleq\x06X\x05\x00\x00\x00Mouseq\x07U\x07defaultq\x08I00\nU\x08requiredq\tI00\nU\x08readonlyq\nI00\nU\tfieldNameq\x0bU\x08ui_mouseq\x0cU\x08__name__q\rU\x05valueq\x0eU\tinterfaceq\x0fccollective.js.jqueryui.controlpanel\nIJQueryUIPlugins\nq\x10U\x0edefaultFactoryq\x11NU\x07__doc__q\x12h\x07U\rinterfaceNameq\x13U4collective.js.jqueryui.controlpanel.IJQueryUIPluginsq\x14u.'
2020-02-21 12:49:48,330 INFO    [zodbverify:66][MainThread] Traceback (most recent call last):
File "/plone/buildout-cache/eggs/zodbverify-1.0.1-py2.7.egg/zodbverify/verify.py", line 60, in verify_record
    unpickler.load()
ImportError: No module named js.jqueryui.controlpanel

2020-02-21 12:50:55,574 INFO    [zodbverify:48][MainThread] Done! Scanned 2412342 records. 
Found 310 records that could not be loaded. 
Exceptions and how often they happened: 
ImportError: No module named controlpanel.markup: 5
ImportError: No module named blocks.interfaces: 5
ImportError: No module named js.jqueryui.controlpanel: 288
ImportError: No module named tiles.modifiers: 5
ImportError: No module named piwik.core.interfaces: 3
ImportError: No module named cover.content: 4

Plone Foundation Code of Conduct