Ñò …=vIc@síddkZddklZddklZlZddklZddk l Z dZ dZ dZ e Zed gƒZhZd efd „ƒYZd efd „ƒYZddd„ƒYZe d„Zd„Zdefd„ƒYZdS(iÿÿÿÿN(t implements(tISavepointDataManagertIDataManagerSavepoint(tSessionExtension(tEnginetactivetchangedtreadonlytsqlitetSessionDataManagercBseZdZeeƒd„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z d „Z ed „ƒZd „ZRS( smIntegrate a top level sqlalchemy session transaction into a zope transaction One phase variant. cCs<|iiƒd|_||_|tt|ƒscCs|iiƒdS(N(Rtflush(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyt tpc_beginBscCs5tt|iƒ}|tj o|idƒndS(Nsno work(RRRtSTATUS_INVALIDATEDR(RRR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pytcommitEs cCs2|idj o|iiƒ|idƒndS(Nt committed(R RRR(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyttpc_voteJs cCsdS(N((RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyt tpc_finishPscCsdS(N((RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyt tpc_abortSscCsdt|iƒS(Ns~sqlalchemy:%d(RR (R((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pytsortKeyVscCsFtd„|iiiiƒDƒƒitƒotdƒ‚n|iS(sSSavepoints are only supported when all connections support subtransactions css3x,|]%}t|tƒo|iiVqqWdS(N(t isinstanceRturlt drivername(t.0tengine((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pys fs t savepoint( tsetRR t _connectionstkeyst intersectiontNO_SAVEPOINT_SUPPORTtAttributeErrort _savepoint(R((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR*\s  cCs t|iƒS(N(tSessionSavepointR(R((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR1ms(t__name__t __module__t__doc__RRRRRRRR!R"R#R$tpropertyR*R1(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR &s         tTwoPhaseSessionDataManagercBs2eZdZd„Zd„Zd„Zd„ZRS(sTwo phase variant. cCs.|idj o|iiƒd|_ndS(Ntvoted(R RtprepareR(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR!ts cCs2|idj o|iiƒ|idƒndS(NR (R RRR(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR"ys cCs2|idj o|iiƒ|idƒndS(Nsaborted commit(R RtrollbackR(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR#~s cCsdt|iƒS(Nssqlalchemy.twophase:%d(RR (R((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR$ƒs(R3R4R5R!R"R#R$(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR7qs    R2cBs$eZeeƒd„Zd„ZRS(cCs&||_|iƒ|_|iƒdS(N(Rt begin_nestedR R(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR‹s cCs|iiƒ|iiƒdS(N(R R:Rtclear(R((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR:s (R3R4RRRR:(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR2ˆs  cCsZtit|ƒdƒdjo7|iotpt}tiƒi|||ƒƒndS(s:Join a session to a transaction using the appropriate datamanager. It is safe to call this multiple times, if the session is already joined then it just returns. `initial_state` is either STATUS_ACTIVE, STATUS_INVALIDATED or STATUS_READONLY If using the default initial status of STATUS_ACTIVE, you must ensure that dirty_session(session) is called when data is written to the database. The DirtyAfterFlush SessionExtension can be used to ensure that this is called automatically after session write operations. N( RtgetRRttwophaseR7R tzope_transactiontjoin(Rt initial_statet DataManager((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pytjoin_transaction–scCsttt|ƒs K