123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- from __future__ import absolute_import
-
- import django
-
- from contextlib import contextmanager
- from django.db import transaction
-
- if django.VERSION < (1, 6): # pragma: no cover
-
- def get_queryset(s):
- return s.get_query_set()
- else:
- def get_queryset(s): # noqa
- return s.get_queryset()
-
- try:
- from django.db.transaction import atomic # noqa
- except ImportError: # pragma: no cover
-
- try:
- from django.db.transaction import Transaction # noqa
- except ImportError:
- @contextmanager
- def commit_on_success(*args, **kwargs):
- try:
- transaction.enter_transaction_management(*args, **kwargs)
- transaction.managed(True, *args, **kwargs)
- try:
- yield
- except:
- if transaction.is_dirty(*args, **kwargs):
- transaction.rollback(*args, **kwargs)
- raise
- else:
- if transaction.is_dirty(*args, **kwargs):
- try:
- transaction.commit(*args, **kwargs)
- except:
- transaction.rollback(*args, **kwargs)
- raise
- finally:
- transaction.leave_transaction_management(*args, **kwargs)
- else: # pragma: no cover
- from django.db.transaction import commit_on_success # noqa
-
- commit_unless_managed = transaction.commit_unless_managed
- rollback_unless_managed = transaction.rollback_unless_managed
- else:
- @contextmanager
- def commit_on_success(using=None): # noqa
- connection = transaction.get_connection(using)
- if connection.features.autocommits_when_autocommit_is_off:
- # ignore stupid warnings and errors
- yield
- else:
- with transaction.atomic(using):
- yield
-
- def commit_unless_managed(*args, **kwargs): # noqa
- pass
-
- def rollback_unless_managed(*args, **kwargs): # noqa
- pass
|