/[papo]/gnue/forms/src/GFForm.py
ViewVC logotype

Diff of /gnue/forms/src/GFForm.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.14.2.4 by styxman, Tue May 6 14:32:12 2003 UTC revision 1.14.2.5 by apronotti, Fri May 9 22:23:09 2003 UTC
# Line 109  class GFForm(GFObj, GRootObj, GFEventAwa Line 109  class GFForm(GFObj, GRootObj, GFEventAwa
109                                'genericBox':{'function':self.triggerGenericBox},                                'genericBox':{'function':self.triggerGenericBox},
110                                'callTrigger':{'function':self.triggerCallTrigger},                                'callTrigger':{'function':self.triggerCallTrigger},
111                                'exit':{'function':self.exit},                                'exit':{'function':self.exit},
112                                'setParameter':{'function':self.setParameter},                                'commit':{'function':self.commit},
113                                  'postChanges':{'function':self.postChanges},
114                                  'reset':{'function':self.reset},
115                                  'clear':{'function':self.clear},                              
116                                  'commitConnection':{'function':self.commitConnection},
117                                  'rollbackConnection':{'function':self.rollbackConnection},
118                                  'setParameter':{'function':self.setParameter},                              
119                                'getParameter':{'function':self.getParameter,                                'getParameter':{'function':self.getParameter,
120                                            'global': 1,                                            'global': 1,
121                                            },                                            },
# Line 471  class GFForm(GFObj, GRootObj, GFEventAwa Line 477  class GFForm(GFObj, GRootObj, GFEventAwa
477    
478      self._app.dispatchEvent(GFEvent('endWAIT',None));      self._app.dispatchEvent(GFEvent('endWAIT',None));
479    
480    def commit(self):    def commitConnection(self):
481        self._currentBlock._dataSourceLink._dataObject.commit()
482    
483      def rollbackConnection(self):
484        self._currentBlock._dataSourceLink._dataObject.rollback()
485        
486      def commit(self, onlyThisBlock=None):
487      self._app.dispatchEvent(GFEvent('beginWAIT',None));      self._app.dispatchEvent(GFEvent('beginWAIT',None));
488    
489      message = None      message = None
# Line 486  class GFForm(GFObj, GRootObj, GFEventAwa Line 498  class GFForm(GFObj, GRootObj, GFEventAwa
498            self._app.dispatchEvent(GFEvent('endWAIT',None));            self._app.dispatchEvent(GFEvent('endWAIT',None));
499            return _("Form trigger returned error")            return _("Form trigger returned error")
500    
501          for block in self._blockList:          blockList = []
502            if onlyThisBlock:
503              blockList.append(onlyThisBlock)
504            else:
505              blockList = self._blockList
506              
507            for block in blockList:
508            GDebug.printMesg(1, "Saving %s"%block.name)            GDebug.printMesg(1, "Saving %s"%block.name)
509            try:            try:
510    
# Line 505  class GFForm(GFObj, GRootObj, GFEventAwa Line 523  class GFForm(GFObj, GRootObj, GFEventAwa
523              return _("Block trigger returned error")              return _("Block trigger returned error")
524            block.processTrigger('Post-Commit')            block.processTrigger('Post-Commit')
525    
526          for block in self._blockList:          for block in blockList:
527              block.switchRecord(0)              block.switchRecord(0)
528    
529        else:        else:
# Line 528  class GFForm(GFObj, GRootObj, GFEventAwa Line 546  class GFForm(GFObj, GRootObj, GFEventAwa
546    
547      return message      return message
548    
549      def postChanges(self, onlyThisBlock=None):
550        self._app.dispatchEvent(GFEvent('beginWAIT',None));
551    
552        message = None
553    
554        try:
555          if not self.readonly:
556            # Form level pre-commit
557            try:
558              self.processTrigger('Pre-Commit')
559            except TriggerError:
560              GDebug.printMesg(1, "Trigger form Pre-Commit threw a TriggerError!")
561              self._app.dispatchEvent(GFEvent('endWAIT',None));
562              return _("Form trigger returned error")
563    
564            blockList = []
565            if onlyThisBlock:
566              blockList.append(onlyThisBlock)
567            else:
568              blockList = self._blockList
569              
570            for block in blockList:
571              GDebug.printMesg(1, "Saving %s"%block.name)
572              try:
573    
574                # This gets lost in the Pre-Commit code
575                block._precommitRecord = block._currentRecord
576    
577                # TODO: Need to check with jamest..
578                # Now, block-level pre-commits get called for
579                # EACH record via another hook in GFDataSource
580                ##block.processTrigger('Pre-Commit')
581    
582                block.processPostChanges()
583                self._currentBlock = block
584              except TriggerError:
585                GDebug.printMesg(1, "Trigger block Pre-Commit threw a TriggerError!")
586                self._app.dispatchEvent(GFEvent('endWAIT',None));
587                return _("Block trigger returned error")
588              block.processTrigger('Post-Commit')
589    
590            for block in blockList:
591                block.switchRecord(0)
592    
593          else:
594            message = _('Form is readonly')
595            self._app.dispatchEvent(GFEvent('endWAIT',None));
596            return message
597    
598          self.processTrigger('Post-Commit')
599    
600        except DBError, err:
601          #self.rollback(1)
602          message = _("Database commit error:\n%s\n%s ") % (sys.exc_info()[0], sys.exc_info()[1])
603          #print message
604          self._app.dispatchEvent(GFEvent('endWAIT',None));
605          raise DBError(str(err))
606        except:
607          print _("\n\nGFForm: Unexpected Exception:")
608          print '-'*60
609          traceback.print_exc(file=sys.stdout)
610          print '-'*60
611    
612        self._app.dispatchEvent(GFEvent('endWAIT',None));
613    
614        return message
615    
616    def executeAbout(self,event):    def executeAbout(self,event):
617       version = VERSION       version = VERSION
618       name = self.getOption('title') or "Unknown"       name = self.getOption('title') or "Unknown"
# Line 537  class GFForm(GFObj, GRootObj, GFEventAwa Line 622  class GFForm(GFObj, GRootObj, GFEventAwa
622    
623       self.dispatchEvent(GFEvent('uiABOUT',[version,name,formversion,author,description]))       self.dispatchEvent(GFEvent('uiABOUT',[version,name,formversion,author,description]))
624    
625      def reset(self):
626        self.rollback(1)
627    
628      def clear(self):
629        self.rollback()
630        
631    def rollback(self, recover=0):    def rollback(self, recover=0):
632        #commited = 0
633      self.endEditing()      self.endEditing()
634      for block in self._blockList:      for block in self._blockList:
635        block.processRollback(recover)        block.processRollback(recover)
636          #if not commited \
637          #   and str(block._dataSourceLink._dataObject).startswith("<gnue.common.dbdrivers.psycopg.DBdriver.PG_DataObject_Objec"):
638          #  block._dataSourceLink._dataObject.rollback()
639          #  commited = 1
640      self.refreshDisplay(self)      self.refreshDisplay(self)
641      self._currentBlock.jumpRecord(self._currentBlock._currentRecord)      self._currentBlock.jumpRecord(self._currentBlock._currentRecord)
642    
643    
644    #    #
645    # fireTrigger    # fireTrigger
646    #    #

Legend:
Removed from v.1.14.2.4  
changed lines
  Added in v.1.14.2.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26