valuable feedback from this list made it possible to code this without losing
myself in dead alleys and strange concepts. Please feel wellcome to download
versioning and locking support for MiddleKit from
To quote from the README:
The modules provide cooperative advisory locking and versioning features to
MiddleKit objects. Both are kept separate - you can use locking on one
object, versioning on the next, and both on a third object.
In a way that may seem familiar to Zope users, you can create a new version of
an object and play around with it, while other parts of the application still
only see the unmodified original object. Then you can commit the new version or
discard it. While one open version exists, no other versions can be created.
All old versions are kept as backups. If you decide to use locking, creating a
new version and committing are shielded in a thread-safe way so that object
consistency is ensured among applications sharing the same database.
The locking feature depends on MySQL. It tries nothing to prevent
applications from behaving badly, i.e. changing objects without creating
versions first or changing objects without obtaining a lock on the object.
The locking feature requires you to use a drop-in replacement for
MySQLObjectStore called LockingMySQLObjectStore, contained in Lockable.py
New versions and backup of old versions are stored in a separate class and a
separate database table.
The current version of this package is 0.1. It works for me on
SuSE Linux 7.3 and 8.2
Python 2.2.1 and 2.1.1
Examples are included.
And thanks for Webware!
-- Martin Virtel
aim / yahoo messenger mvftd
tel. +49 177 242 2889