commit-gnue
[Top][All Lists]
Advanced

[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
   #





reply via email to

[Prev in Thread] Current Thread [Next in Thread]