You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
18 lines
470 B
18 lines
470 B
from django.db import transaction
|
|
|
|
|
|
def transaction_decorator(function_to_decorate):
|
|
def wrap(*args, **kwargs):
|
|
transaction.set_autocommit(False)
|
|
try:
|
|
result = function_to_decorate(*args, **kwargs)
|
|
except Exception as ex:
|
|
transaction.rollback()
|
|
raise ex
|
|
else:
|
|
transaction.commit()
|
|
return result
|
|
finally:
|
|
transaction.set_autocommit(True)
|
|
|
|
return wrap
|
|
|