Skip to content

Commit 749af7b

Browse files
committed
forgot to add djcelery.db module
1 parent d04f9a4 commit 749af7b

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

djcelery/db.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from __future__ import absolute_import
2+
3+
from contextlib import contextmanager
4+
from django.db import transaction
5+
6+
try:
7+
from django.db.transaction import atomic
8+
except ImportError: # pragma: no cover
9+
10+
try:
11+
from django.db.transaction import Transaction
12+
except ImportError:
13+
@contextmanager
14+
def commit_on_success(*args, **kwargs):
15+
try:
16+
transaction.enter_transaction_management(*args, **kwargs)
17+
transaction.managed(True, *args, **kwargs)
18+
try:
19+
yield
20+
except:
21+
if transaction.is_dirty(*args, **kwargs):
22+
transaction.rollback(*args, **kwargs)
23+
raise
24+
else:
25+
if transaction.is_dirty(*args, **kwargs):
26+
try:
27+
transaction.commit(*args, **kwargs)
28+
except:
29+
transaction.rollback(*args, **kwargs)
30+
raise
31+
finally:
32+
transaction.leave_transaction_management(*args, **kwargs)
33+
else: # pragma: no cover
34+
from django.db.transaction import commit_on_success # noqa
35+
36+
commit_unless_managed = transaction.commit_unless_managed
37+
rollback_unless_managed = transaction.rollback_unless_managed
38+
else:
39+
@contextmanager
40+
def commit_on_success(using=None): # noqa
41+
connection = transaction.get_connection(using)
42+
if connection.features.autocommits_when_autocommit_is_off:
43+
# ignore stupid warnings and errors
44+
yield
45+
else:
46+
with transaction.atomic(using):
47+
yield
48+
49+
def commit_unless_managed(*args, **kwargs): # noqa
50+
pass
51+
52+
def rollback_unless_managed(*args, **kwargs): # noqa
53+
pass
54+

0 commit comments

Comments
 (0)