[Checkins] SVN: z3c.zalchemy/trunk/ Added support for optimistic
savepoints.
Christian Theune
ct at gocept.com
Fri Jun 29 05:56:28 EDT 2007
Log message for revision 77230:
Added support for optimistic savepoints.
Changed:
U z3c.zalchemy/trunk/CHANGES.txt
U z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py
-=-
Modified: z3c.zalchemy/trunk/CHANGES.txt
===================================================================
--- z3c.zalchemy/trunk/CHANGES.txt 2007-06-29 09:55:07 UTC (rev 77229)
+++ z3c.zalchemy/trunk/CHANGES.txt 2007-06-29 09:56:27 UTC (rev 77230)
@@ -5,6 +5,9 @@
0.2 - unreleased
================
+ - Added support for optimistic savepoints. This can be used, similarly to
+ what happens with ZODB, to flush intermediary work without committing.
+
- Provide a tighter integration with Zope's transaction mechanism. Sessions
are now automatically associated with new objects. We rely on SQLAlchemy's
SessionContext object which hands out a session for each thread. Your code
Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py 2007-06-29 09:55:07 UTC (rev 77229)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py 2007-06-29 09:56:27 UTC (rev 77230)
@@ -21,6 +21,7 @@
from zope.schema.fieldproperty import FieldProperty
from transaction.interfaces import IDataManager, ISynchronizer
+from transaction.interfaces import IDataManagerSavepoint
from interfaces import IAlchemyEngineUtility
@@ -229,6 +230,10 @@
def sortKey(self):
return str(id(self))
+ def savepoint(self):
+ self.session.flush()
+ return AlchemySavepoint()
+
def _cleanup(self):
self.session.clear()
del ctx.current
@@ -237,6 +242,18 @@
util._resetEngine()
+class AlchemySavepoint(object):
+ """A savepoint for the AlchemyDataManager that only supports optimistic
+ savepoints.
+
+ """
+
+ implements(IDataManagerSavepoint)
+
+ def rollback(self):
+ raise Exception("Can't roll back zalchemy savepoints.")
+
+
class MetaManager(object):
"""A manager for metadata to be able to use the same table name in
different databases.
More information about the Checkins
mailing list