Kaydet (Commit) e654180c authored tarafından Aymeric Augustin's avatar Aymeric Augustin

Improved the API of set_autocommit.

üst f3210093
...@@ -108,7 +108,7 @@ class BaseDatabaseWrapper(object): ...@@ -108,7 +108,7 @@ class BaseDatabaseWrapper(object):
self.connection = self.get_new_connection(conn_params) self.connection = self.get_new_connection(conn_params)
self.init_connection_state() self.init_connection_state()
if self.settings_dict['AUTOCOMMIT']: if self.settings_dict['AUTOCOMMIT']:
self.set_autocommit() self.set_autocommit(True)
connection_created.send(sender=self.__class__, connection=self) connection_created.send(sender=self.__class__, connection=self)
def ensure_connection(self): def ensure_connection(self):
...@@ -314,7 +314,7 @@ class BaseDatabaseWrapper(object): ...@@ -314,7 +314,7 @@ class BaseDatabaseWrapper(object):
if managed == self.autocommit: if managed == self.autocommit:
self.set_autocommit(not managed) self.set_autocommit(not managed)
def set_autocommit(self, autocommit=True): def set_autocommit(self, autocommit):
""" """
Enable or disable autocommit. Enable or disable autocommit.
""" """
......
...@@ -466,7 +466,7 @@ class BaseDatabaseCreation(object): ...@@ -466,7 +466,7 @@ class BaseDatabaseCreation(object):
warnings.warn( warnings.warn(
"set_autocommit was moved from BaseDatabaseCreation to " "set_autocommit was moved from BaseDatabaseCreation to "
"BaseDatabaseWrapper.", PendingDeprecationWarning, stacklevel=2) "BaseDatabaseWrapper.", PendingDeprecationWarning, stacklevel=2)
return self.connection.set_autocommit() return self.connection.set_autocommit(True)
def sql_table_creation_suffix(self): def sql_table_creation_suffix(self):
""" """
......
...@@ -124,7 +124,7 @@ def get_autocommit(using=None): ...@@ -124,7 +124,7 @@ def get_autocommit(using=None):
""" """
return get_connection(using).autocommit return get_connection(using).autocommit
def set_autocommit(using=None, autocommit=True): def set_autocommit(autocommit, using=None):
""" """
Set the autocommit status of the connection. Set the autocommit status of the connection.
""" """
......
...@@ -255,7 +255,7 @@ database connection, if you need to. ...@@ -255,7 +255,7 @@ database connection, if you need to.
.. function:: get_autocommit(using=None) .. function:: get_autocommit(using=None)
.. function:: set_autocommit(using=None, autocommit=True) .. function:: set_autocommit(autocommit, using=None)
These functions take a ``using`` argument which should be the name of a These functions take a ``using`` argument which should be the name of a
database. If it isn't provided, Django uses the ``"default"`` database. database. If it isn't provided, Django uses the ``"default"`` database.
...@@ -600,11 +600,11 @@ To disable autocommit temporarily, instead of:: ...@@ -600,11 +600,11 @@ To disable autocommit temporarily, instead of::
you should now use:: you should now use::
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
# do stuff # do stuff
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
To enable autocommit temporarily, instead of:: To enable autocommit temporarily, instead of::
...@@ -613,11 +613,11 @@ To enable autocommit temporarily, instead of:: ...@@ -613,11 +613,11 @@ To enable autocommit temporarily, instead of::
you should now use:: you should now use::
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
try: try:
# do stuff # do stuff
finally: finally:
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
Disabling transaction management Disabling transaction management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
...@@ -522,7 +522,7 @@ class FkConstraintsTests(TransactionTestCase): ...@@ -522,7 +522,7 @@ class FkConstraintsTests(TransactionTestCase):
""" """
When constraint checks are disabled, should be able to write bad data without IntegrityErrors. When constraint checks are disabled, should be able to write bad data without IntegrityErrors.
""" """
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
# Create an Article. # Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
...@@ -538,13 +538,13 @@ class FkConstraintsTests(TransactionTestCase): ...@@ -538,13 +538,13 @@ class FkConstraintsTests(TransactionTestCase):
finally: finally:
transaction.rollback() transaction.rollback()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
def test_disable_constraint_checks_context_manager(self): def test_disable_constraint_checks_context_manager(self):
""" """
When constraint checks are disabled (using context manager), should be able to write bad data without IntegrityErrors. When constraint checks are disabled (using context manager), should be able to write bad data without IntegrityErrors.
""" """
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
# Create an Article. # Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
...@@ -559,14 +559,14 @@ class FkConstraintsTests(TransactionTestCase): ...@@ -559,14 +559,14 @@ class FkConstraintsTests(TransactionTestCase):
finally: finally:
transaction.rollback() transaction.rollback()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
def test_check_constraints(self): def test_check_constraints(self):
""" """
Constraint checks should raise an IntegrityError when bad data is in the DB. Constraint checks should raise an IntegrityError when bad data is in the DB.
""" """
try: try:
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
# Create an Article. # Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB # Retrive it from the DB
...@@ -580,7 +580,7 @@ class FkConstraintsTests(TransactionTestCase): ...@@ -580,7 +580,7 @@ class FkConstraintsTests(TransactionTestCase):
finally: finally:
transaction.rollback() transaction.rollback()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
class ThreadTests(TestCase): class ThreadTests(TestCase):
......
...@@ -25,7 +25,7 @@ class SampleTestCase(TestCase): ...@@ -25,7 +25,7 @@ class SampleTestCase(TestCase):
class TestNoInitialDataLoading(TransactionTestCase): class TestNoInitialDataLoading(TransactionTestCase):
def test_syncdb(self): def test_syncdb(self):
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
Book.objects.all().delete() Book.objects.all().delete()
...@@ -37,7 +37,7 @@ class TestNoInitialDataLoading(TransactionTestCase): ...@@ -37,7 +37,7 @@ class TestNoInitialDataLoading(TransactionTestCase):
self.assertQuerysetEqual(Book.objects.all(), []) self.assertQuerysetEqual(Book.objects.all(), [])
transaction.rollback() transaction.rollback()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
def test_flush(self): def test_flush(self):
...@@ -49,7 +49,7 @@ class TestNoInitialDataLoading(TransactionTestCase): ...@@ -49,7 +49,7 @@ class TestNoInitialDataLoading(TransactionTestCase):
lambda a: a.name lambda a: a.name
) )
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
management.call_command( management.call_command(
'flush', 'flush',
...@@ -61,7 +61,7 @@ class TestNoInitialDataLoading(TransactionTestCase): ...@@ -61,7 +61,7 @@ class TestNoInitialDataLoading(TransactionTestCase):
self.assertQuerysetEqual(Book.objects.all(), []) self.assertQuerysetEqual(Book.objects.all(), [])
transaction.rollback() transaction.rollback()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
class FixtureTestCase(TestCase): class FixtureTestCase(TestCase):
......
...@@ -684,8 +684,8 @@ class TestTicket11101(TransactionTestCase): ...@@ -684,8 +684,8 @@ class TestTicket11101(TransactionTestCase):
@skipUnlessDBFeature('supports_transactions') @skipUnlessDBFeature('supports_transactions')
def test_ticket_11101(self): def test_ticket_11101(self):
"""Test that fixtures can be rolled back (ticket #11101).""" """Test that fixtures can be rolled back (ticket #11101)."""
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
self.ticket_11101() self.ticket_11101()
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
...@@ -269,19 +269,19 @@ class AtomicMergeTests(TransactionTestCase): ...@@ -269,19 +269,19 @@ class AtomicMergeTests(TransactionTestCase):
class AtomicErrorsTests(TransactionTestCase): class AtomicErrorsTests(TransactionTestCase):
def test_atomic_requires_autocommit(self): def test_atomic_requires_autocommit(self):
transaction.set_autocommit(autocommit=False) transaction.set_autocommit(False)
try: try:
with self.assertRaises(transaction.TransactionManagementError): with self.assertRaises(transaction.TransactionManagementError):
with transaction.atomic(): with transaction.atomic():
pass pass
finally: finally:
transaction.set_autocommit(autocommit=True) transaction.set_autocommit(True)
def test_atomic_prevents_disabling_autocommit(self): def test_atomic_prevents_disabling_autocommit(self):
autocommit = transaction.get_autocommit() autocommit = transaction.get_autocommit()
with transaction.atomic(): with transaction.atomic():
with self.assertRaises(transaction.TransactionManagementError): with self.assertRaises(transaction.TransactionManagementError):
transaction.set_autocommit(autocommit=not autocommit) transaction.set_autocommit(not autocommit)
# Make sure autocommit wasn't changed. # Make sure autocommit wasn't changed.
self.assertEqual(connection.autocommit, autocommit) self.assertEqual(connection.autocommit, autocommit)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment