summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2015-09-21 20:53:10 +0200
committerAymeric Augustin <aymeric.augustin@m4x.org>2015-09-21 22:31:13 +0200
commit425c5e40eae90bd3ee3633011ef97edb26858c94 (patch)
tree5791cbdf7cd9384ee650a497a9d677bbff105268 /django
parent158b0a28374054b1c3f94a9602b69f93fc980448 (diff)
[1.8.x] Fixed #24921 -- set_autocommit(False) + ORM queries.
This commits lifts the restriction that the outermost atomic block must be declared with savepoint=False. This restriction was overly cautious. The logic that makes it safe not to create savepoints for inner blocks also applies to the outermost block when autocommit is disabled and a transaction is already active. This makes it possible to use the ORM after set_autocommit(False). Previously it didn't work because ORM write operations are protected with atomic(savepoint=False). Backport of 91e9f1c from master
Diffstat (limited to 'django')
-rw-r--r--django/db/transaction.py7
1 files changed, 0 insertions, 7 deletions
diff --git a/django/db/transaction.py b/django/db/transaction.py
index d1388675d5..d67fd14cdf 100644
--- a/django/db/transaction.py
+++ b/django/db/transaction.py
@@ -156,13 +156,6 @@ class Atomic(ContextDecorator):
raise TransactionManagementError(
"Your database backend doesn't behave properly when "
"autocommit is off. Turn it on before using 'atomic'.")
- # When entering an atomic block with autocommit turned off,
- # Django should only use savepoints and shouldn't commit.
- # This requires at least a savepoint for the outermost block.
- if not self.savepoint:
- raise TransactionManagementError(
- "The outermost 'atomic' block cannot use "
- "savepoint = False when autocommit is off.")
# Pretend we're already in an atomic block to bypass the code
# that disables autocommit to enter a transaction, and make a
# note to deal with this case in __exit__.