I've now migrated the IssueTrackerProduct so that it works on Zope 2.8.0 which was released a couple of days ago. Zope 2.8.0 used ZODB 3.4 which has multi-version concurrency control support and has taken up Martijn Faaseen's work on Five. The only two and a half problems I encountered were...:

The SomeClass.__dict__ attribute is no longer a simple dict which meant that one couldn't do something like this:

IssueTracker.__dict__['rss.xml'] = IssueTracker.RSS10

The new way to do stuff like this is to use 'setattr()':

setattr(IssueTracker, 'rss.xml', IssueTracker.RSS10)

The other problem was with the new ZCatalog which now stores it's __len__ in an attribute called _length which my old ZCatalog instances didn't have. Fortunately Zope 2.8.0 has some migration code in there but in my case unindex_object() was called before reindexing the catalog. The solution to this was to do nothing but to press the "Update Everthing" button which clears the catalog and reindexes the issue objects.

The other little caveat was a DeprecationWarning about get_transaction(). The old code looked like this:

get_transaction().commit()

which I've now had to update to:

import transaction
transaction.get().commit()

(obviously this new transaction stuff only works in Zope 2.8.0 so I had to put in some code that suits both 2.8.0 and older versions)

Sascha Welter - 01 July 2005 [«« Reply to this]
Great work Peter! These will be very usefull to me and I think a lot of other people when upgrading. Lets hope the search engines find this quickly, so the questions won't have to be asked all over on #zope :-)
Florent Guillaume - 29 September 2005 [«« Reply to this]
transaction.commit() is enough, actually.


Your email will never ever be published