code: def _transactional(self, method, *argv, **argd):
          
          self._session.begin(subtransactions = True)
          try:
              result = method(self, *argv, **argd)
              self._session.commit()
              return result
          except:
              self._session.rollback()
              raise
docs: Begins a transaction and calls the given DAO method.
  
          If the method executes successfully the transaction is commited.
  
          If the method fails, the transaction is rolled back.
  
          @type  method: callable
          @param method: Bound method of this class or one of its subclasses.
              The first argument will always be C{self}.
  
          @return: The return value of the method call.
  
          @raise Exception: Any exception raised by the method.