Ñò …=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 RR R(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_finishPscCs|idj pt‚dS(NR!(RR(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.pyR2ms(t__name__t __module__t__doc__RRRRRRR R"R#R$R%tpropertyR+R2(((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 RR R(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(R4R5R6R"R#R$R%(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR8qs    R3cBs$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 (R4R5RRRR;(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyR3ˆ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( RtgetRRttwophaseR8R tzope_transactiontjoin(Rt initial_statet DataManager((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pytjoin_transaction–scCs2tt|ƒtj pt‚ttt|ƒRR(RR((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyt before_commitÈs( R4R5R6t STATUS_ACTIVERRKRMRORSRTRV(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyRH¯s      ((R R@tzope.interfaceRttransaction.interfacesRRtsqlalchemy.orm.sessionRtsqlalchemy.engine.baseRRWRFRERR,R0RtobjectR R8R3RDRGRH(((s?/usr/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.pyts K