import Transaction

TransactionException = "TransactionException"

transactionState = 0
transactionLoadObject = []

def begin():
    if Transaction.transactionState == 0:
        Transaction.transactionState = 1
    else:
        raise Transaction.TransactionException, "Transaction already started"

def commit():
    if transactionState == 1:
        for o in Transaction.transactionLoadObject:
            try:
                o.store()
            except:
                print "Error during commit object:",o
        Transaction.transactionState = 0
        Transaction.transactionLoadObject = []
    else:
        raise Transaction.TransactionException, "Transaction not started"

def rollback():
    if transactionState == 1:
        Transaction.transactionState = 0
        Transaction.transactionLoadObject = []
    else:
        raise Transaction.TransactionException, "Transaction not started"

def add(o):
    """
    methode appele par tous les create et find des objets
    """
    if Transaction.transactionState == 1:
        Transaction.transactionLoadObject.append(o)
    else:
        raise Transaction.TransactionException, "You must used object in transaction"

