From e654180ce2a11ef4c525497d6c40dc542e16806c Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 11 Mar 2013 15:10:58 +0100 Subject: [PATCH] Improved the API of set_autocommit. --- django/db/backends/__init__.py | 4 ++-- django/db/backends/creation.py | 2 +- django/db/transaction.py | 2 +- docs/topics/db/transactions.txt | 10 +++++----- tests/backends/tests.py | 12 ++++++------ tests/fixtures_model_package/tests.py | 8 ++++---- tests/fixtures_regress/tests.py | 4 ++-- tests/transactions/tests.py | 6 +++--- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index cb17e1db61c..09a33eebae9 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -108,7 +108,7 @@ class BaseDatabaseWrapper(object): self.connection = self.get_new_connection(conn_params) self.init_connection_state() if self.settings_dict['AUTOCOMMIT']: - self.set_autocommit() + self.set_autocommit(True) connection_created.send(sender=self.__class__, connection=self) def ensure_connection(self): @@ -314,7 +314,7 @@ class BaseDatabaseWrapper(object): if managed == self.autocommit: self.set_autocommit(not managed) - def set_autocommit(self, autocommit=True): + def set_autocommit(self, autocommit): """ Enable or disable autocommit. """ diff --git a/django/db/backends/creation.py b/django/db/backends/creation.py index c0d0a5958b7..38c284d6d3c 100644 --- a/django/db/backends/creation.py +++ b/django/db/backends/creation.py @@ -466,7 +466,7 @@ class BaseDatabaseCreation(object): warnings.warn( "set_autocommit was moved from BaseDatabaseCreation to " "BaseDatabaseWrapper.", PendingDeprecationWarning, stacklevel=2) - return self.connection.set_autocommit() + return self.connection.set_autocommit(True) def sql_table_creation_suffix(self): """ diff --git a/django/db/transaction.py b/django/db/transaction.py index be8981f968a..3a4c3f2b8dd 100644 --- a/django/db/transaction.py +++ b/django/db/transaction.py @@ -124,7 +124,7 @@ def get_autocommit(using=None): """ 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. """ diff --git a/docs/topics/db/transactions.txt b/docs/topics/db/transactions.txt index b8fc0d4efa4..b8017e8bfab 100644 --- a/docs/topics/db/transactions.txt +++ b/docs/topics/db/transactions.txt @@ -255,7 +255,7 @@ database connection, if you need to. .. 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 database. If it isn't provided, Django uses the ``"default"`` database. @@ -600,11 +600,11 @@ To disable autocommit temporarily, instead of:: you should now use:: - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: # do stuff finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) To enable autocommit temporarily, instead of:: @@ -613,11 +613,11 @@ To enable autocommit temporarily, instead of:: you should now use:: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) try: # do stuff finally: - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) Disabling transaction management ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/backends/tests.py b/tests/backends/tests.py index 51acbcb07fc..c7f09013d4c 100644 --- a/tests/backends/tests.py +++ b/tests/backends/tests.py @@ -522,7 +522,7 @@ class FkConstraintsTests(TransactionTestCase): """ When constraint checks are disabled, should be able to write bad data without IntegrityErrors. """ - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: # Create an Article. models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) @@ -538,13 +538,13 @@ class FkConstraintsTests(TransactionTestCase): finally: transaction.rollback() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) 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. """ - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: # Create an Article. models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) @@ -559,14 +559,14 @@ class FkConstraintsTests(TransactionTestCase): finally: transaction.rollback() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) def test_check_constraints(self): """ Constraint checks should raise an IntegrityError when bad data is in the DB. """ try: - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) # Create an Article. models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r) # Retrive it from the DB @@ -580,7 +580,7 @@ class FkConstraintsTests(TransactionTestCase): finally: transaction.rollback() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) class ThreadTests(TestCase): diff --git a/tests/fixtures_model_package/tests.py b/tests/fixtures_model_package/tests.py index 894a6c7fde9..c250f647ce8 100644 --- a/tests/fixtures_model_package/tests.py +++ b/tests/fixtures_model_package/tests.py @@ -25,7 +25,7 @@ class SampleTestCase(TestCase): class TestNoInitialDataLoading(TransactionTestCase): def test_syncdb(self): - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: Book.objects.all().delete() @@ -37,7 +37,7 @@ class TestNoInitialDataLoading(TransactionTestCase): self.assertQuerysetEqual(Book.objects.all(), []) transaction.rollback() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) def test_flush(self): @@ -49,7 +49,7 @@ class TestNoInitialDataLoading(TransactionTestCase): lambda a: a.name ) - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: management.call_command( 'flush', @@ -61,7 +61,7 @@ class TestNoInitialDataLoading(TransactionTestCase): self.assertQuerysetEqual(Book.objects.all(), []) transaction.rollback() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) class FixtureTestCase(TestCase): diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py index f965dd81ac7..c76056b93a1 100644 --- a/tests/fixtures_regress/tests.py +++ b/tests/fixtures_regress/tests.py @@ -684,8 +684,8 @@ class TestTicket11101(TransactionTestCase): @skipUnlessDBFeature('supports_transactions') def test_ticket_11101(self): """Test that fixtures can be rolled back (ticket #11101).""" - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: self.ticket_11101() finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) diff --git a/tests/transactions/tests.py b/tests/transactions/tests.py index 42a78ad4ba5..e5a608e5834 100644 --- a/tests/transactions/tests.py +++ b/tests/transactions/tests.py @@ -269,19 +269,19 @@ class AtomicMergeTests(TransactionTestCase): class AtomicErrorsTests(TransactionTestCase): def test_atomic_requires_autocommit(self): - transaction.set_autocommit(autocommit=False) + transaction.set_autocommit(False) try: with self.assertRaises(transaction.TransactionManagementError): with transaction.atomic(): pass finally: - transaction.set_autocommit(autocommit=True) + transaction.set_autocommit(True) def test_atomic_prevents_disabling_autocommit(self): autocommit = transaction.get_autocommit() with transaction.atomic(): with self.assertRaises(transaction.TransactionManagementError): - transaction.set_autocommit(autocommit=not autocommit) + transaction.set_autocommit(not autocommit) # Make sure autocommit wasn't changed. self.assertEqual(connection.autocommit, autocommit)