[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r6503 - in trunk/gnue-forms/src: . GFObjects
From: |
johannes |
Subject: |
r6503 - in trunk/gnue-forms/src: . GFObjects |
Date: |
Mon, 18 Oct 2004 07:39:34 -0500 (CDT) |
Author: johannes
Date: 2004-10-18 07:39:33 -0500 (Mon, 18 Oct 2004)
New Revision: 6503
Modified:
trunk/gnue-forms/src/GFForm.py
trunk/gnue-forms/src/GFObjects/GFBlock.py
Log:
Perform only one rollback per connection
Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py 2004-10-15 16:37:41 UTC (rev 6502)
+++ trunk/gnue-forms/src/GFForm.py 2004-10-18 12:39:33 UTC (rev 6503)
@@ -604,14 +604,27 @@
- def rollback(self, recover=0):
+ def rollback (self, recover = False):
self.endEditing()
+
+ # First get all different connections
+ conns = {}
for block in self._logic._blockList:
- block.processRollback(recover)
- self.refreshDisplay(self)
+ dLink = block._dataSourceLink
+ if not conns.has_key (dLink.connection) and \
+ dLink._dataObject._connection is not None:
+ conns [dLink.connection] = dLink._dataObject._connection
+
+ for (cName, connection) in conns.items ():
+ connection.rollback ()
+
+ for block in self._logic._blockList:
+ block.processRollback (recover, backendRollback = False)
+
+ self.refreshDisplay (self)
self._currentBlock.jumpRecord(self._currentBlock._currentRecord)
- self.dispatchEvent('cannotCOMMIT')
- self.dispatchEvent('cannotROLLBACK')
+ self.dispatchEvent ('cannotCOMMIT')
+ self.dispatchEvent ('cannotROLLBACK')
#
# fireTrigger
Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py 2004-10-15 16:37:41 UTC (rev
6502)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py 2004-10-18 12:39:33 UTC (rev
6503)
@@ -32,7 +32,7 @@
from gnue.forms.GFObjects.GFDataSource import GFDataSource
-from gnue.common.apps import GDebug
+from gnue.common.apps import errors
from gnue.common.datasources import GConditions
from GFContainer import GFContainer
from gnue.common import events
@@ -508,7 +508,7 @@
# processCommit
#
def processCommit(self):
- GDebug.printMesg(1, "processing commit on block %s"%self.name,1)
+ gDebug (1, "processing commit on block %s"%self.name,1)
self.mode='commit'
@@ -569,14 +569,22 @@
# if recovering=True, then a commit or such failed and we need to clean up
# (but not lose state information)
#
- def processRollback(self, recovering=False):
+ def processRollback (self, recovering = False, backendRollback = True):
+
+ # if called from GFForm the connection's rollback () has been executed
+ # already. But if called from a trigger code we do it here
+ if backendRollback:
+ if self._dataSourceLink._dataObject._connection is not None:
+ self._dataSourceLink._dataObject._connection.rollback ()
+
if not recovering:
self._currentRecord = 0
- self._recordCount = 0
- self._dataSourceLink.createEmptyResultSet()
- self._dataSourceLink._dataObject.rollback()
- self.switchRecord(0)
+ self._recordCount = 0
+ self._dataSourceLink.createEmptyResultSet ()
+ self.switchRecord (0)
+
+
#
# initQuery and processQuery
#
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6503 - in trunk/gnue-forms/src: . GFObjects,
johannes <=