[Zope-dev] weird Page Template / ZODB history problem with Zope 2.12.7
Marius Gedminas
marius at gedmin.as
Mon Sep 27 19:12:52 EDT 2010
On Mon, Sep 27, 2010 at 11:37:11PM +0100, Chris Withers wrote:
> Hi All,
>
> Try this:
>
> - edit a page template
>
> - edit it again
>
> - go to the history tab, and use the "Copy to present" button to bring
> back your first edit.
>
> On the edit tab, you will correctly see the text you brought back.
> However, if you render the template, the old text will be used.
>
> It's only if you "Save changes" that the copied-to-present text will
> actually be used.
>
> Anyone got any ideas why and how to fix this?
Why? Because the precompiled TAL bytecode is sitting there in a
_v_program attribute that's not stored in the ZODB, so it's not reverted
when you undo things.
How to fix? Make the "Copy to present" button drop all _v_* attributes
from the object it modifies.
This is OFS.History.Historical.manage_historyCopy, right? Quick
untested patch:
--- ./OFS/History.py.orig 2010-09-28 02:11:56.535745440 +0300
+++ ./OFS/History.py 2010-09-28 02:12:00.043764683 +0300
@@ -151,6 +151,9 @@
base = aq_base(self)
base._p_activate() # make sure we're not a ghost
base.__setstate__(state) # change the state
+ for attr in dir(base):
+ if attr.startswith('_v_'):
+ delattr(base, attr)
base._p_changed = True # marke object as dirty
self.manage_afterHistoryCopy()
Marius Gedminas
--
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20100928/7bc0a1db/attachment.bin
More information about the Zope-Dev
mailing list