docs: def transaction(self, connection=None, **kwargs):
          """
          a simple context manager useful for when you want to wrap a bunch of db calls in a transaction
          http://docs.python.org/2/library/contextlib.html
          http://docs.python.org/release/2.5/whatsnew/pep-343.html
  
          example --
              with self.transaction()
                  # do a bunch of calls
              # those db calls will be committed by this line
          """
          with self.connection(connection) as connection:
              name = connection.transaction_name()
              connection.transaction_start(name)
              try:
                  yield connection
                  connection.transaction_stop()
  
              except Exception as e:
                  connection.transaction_fail(name)
                  self.raise_error(e)