Zodbverify: Porting Plone with ZopeDB to Python3

For the problem with IPersistentExtra I opened an issue in Zope. Conclusion from there: core Zope does not have this problem, so it is Plone specific. And it is not even necessarily a problem in core Plone: a Plone 5.1 site with the standard content does not have this issue when migrated to 5.2.

I did not like my aliases solution, so I did not want to use the eea.aliases package based on that. Instead, I went with only a rename dictionary for zodbupdate, and loading the dexterity utility.

So here is another tool that you can use: zest.zodbupdate. See PyPI and source code.

My thinking now is: some of the problems that zodbverify complains about, are problems that zodbupdate will solve. So the idea is now (from the readme of zest.zodbupdate):

  1. First with Python 2.7, run bin/zodbupdate -f var/filestorage/Data.fs So no python3 convert stuff! This will detect and apply several explicit and implicit rename rules.

  2. Then run bin/instance zodbverify . If this still gives warnings or exceptions, you may need to define more rules and apply them with zodbupdate.

  3. When all is well, on Python 3 run:

    bin/zodbupdate --convert-py3 --file=var/filestorage/Data.fs --encoding utf8
    
  4. For good measure, on Python 3 run bin/instance zodbverify .

3 Likes