Plone.app.event FakeZone Problem

Hi,

Some time ago, i migrate a Plone 4.0.3 System with AT-Types to Plone 4.3.7 with Dexterity Contenttypes.

Now, i upgrade from 4.3.7 to 5.0. When i edit an Event in P5 i get the following Traceback:

Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module plone.z3cform.layout, line 66, in call
Module plone.z3cform.layout, line 50, in update
Module plone.dexterity.browser.edit, line 58, in update
Module plone.z3cform.fieldsets.extensible, line 59, in update
Module plone.z3cform.patch, line 30, in GroupForm_update
Module z3c.form.group, line 145, in update
Module plone.app.z3cform.csrf, line 21, in execute
Module z3c.form.action, line 98, in execute
Module z3c.form.button, line 315, in call
Module z3c.form.button, line 170, in call
Module plone.dexterity.browser.edit, line 30, in handleApply
Module z3c.form.group, line 126, in applyChanges
Module zope.event, line 31, in notify
Module zope.component.event, line 24, in dispatch
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module zope.interface.adapter, line 585, in subscribers
Module zope.component.event, line 32, in objectEventNotify
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module zope.interface.adapter, line 585, in subscribers
Module plone.app.versioningbehavior.subscribers, line 53, in create_version_on_save
Module Products.CMFEditions.CopyModifyMergeRepositoryTool, line 421, in isUpToDate
Module Products.CMFEditions.ArchivistTool, line 398, in isUpToDate
Module Products.CMFEditions.ZVCStorageTool, line 307, in getModificationDate
Module Products.CMFEditions.ZVCStorageTool, line 265, in retrieve
Module Products.ZopeVersionControl.Repository, line 463, in getVersionOfResource
Module Products.ZopeVersionControl.Version, line 103, in copyState
Module Products.ZopeVersionControl.Version, line 112, in stateCopy
Module Products.ZopeVersionControl.Version, line 60, in cloneByPickle
Module ZODB.Connection, line 860, in setstate
Module ZODB.Connection, line 914, in _setstate
Module ZODB.serialize, line 612, in setGhostState
Module ZODB.serialize, line 605, in getState
TypeError: ('bad tzinfo state arg', <type 'datetime.datetime'>,
('\x07\xdd\x08\x03\x0b\x00\x00\x00\x00\x00', <persistent broken plone.app.event.dx.behaviors.FakeZone instance > <None>

In the plone.app.event Version 1.1.x exists the Class FakeZone See here
I didn't found that Class in the plone.app.event.dx.behaviors in the Version 1.2, wich is used in P5.
What should i do? How can i erase the FakeZone in my Events?

best regards, Jan

1 Like

I have found a soultion that helped me. Remove all Revisions

But if I need revisions? How can still maintain then and resolve this issue?

a) zodbupdate allows to rename classes of ZODB pickles - as an example see https://github.com/zestsoftware/zest.zodbupdate/blob/master/src/zest/zodbupdate/renames.py - if it comes to porting to Python 3 you need to update the ZODB anyway.
b) in general you can provide a stub class at plone.app.event.dx.behaviors.FakeZone by importing plone.app.event.dx.behaviors and assigning behaviors.FakeZone = some_stub_class (or a copy of the original class).

In both cases the single revision will be probably broken, but overall ZODB remains working.