def rollback(self): """Roll-back the transaction. First, the transaction is closed. Every transaction on the stack is then marked for roll-back. If the stack is empty, a TransactionRollback event is emited.""" self._close() for tx in self._stack: tx._need_rollback = True else: if not self._stack: self._handle(TransactionRollback())
def commit(self): """Commit the transaction. First, the transaction is closed. If it needs to be rolled-back, a TransactionRollback event is emited. Otherwise, a TransactionCommit event is emited.""" self._close() if not self._stack: if self._need_rollback: self._handle(TransactionRollback()) else: self._handle(TransactionCommit())