From 5488437ab69cde9161d3de3ffb4ba5eff1111792 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Thu, 21 Feb 2013 21:26:06 +0100 Subject: [PATCH] Factored code and added a missing docstring. --- django/db/backends/__init__.py | 3 + django/db/transaction.py | 100 ++++++++++++--------------------- 2 files changed, 39 insertions(+), 64 deletions(-) diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index 2a7a206c3b..958982bdae 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -208,6 +208,9 @@ class BaseDatabaseWrapper(object): self.clean_savepoints() def clean_savepoints(self): + """ + Resets the counter used to generate unique savepoint ids in this thread. + """ self.savepoint_state = 0 def is_managed(self): diff --git a/django/db/transaction.py b/django/db/transaction.py index dd7e2f4dcb..809f14f628 100644 --- a/django/db/transaction.py +++ b/django/db/transaction.py @@ -24,6 +24,19 @@ class TransactionManagementError(Exception): """ pass +################ +# Private APIs # +################ + +def get_connection(using=None): + """ + Get a database connection by name, or the default database connection + if no name is provided. + """ + if using is None: + using = DEFAULT_DB_ALIAS + return connections[using] + def abort(using=None): """ Roll back any ongoing transactions and clean the transaction management @@ -34,10 +47,7 @@ def abort(using=None): request has finished, the transaction state isn't known, yet the connection must be cleaned up for the next request. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.abort() + get_connection(using).abort() def enter_transaction_management(managed=True, using=None): """ @@ -49,10 +59,7 @@ def enter_transaction_management(managed=True, using=None): from the settings, if there is no surrounding block (dirty is always false when no current block is running). """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.enter_transaction_management(managed) + get_connection(using).enter_transaction_management(managed) def leave_transaction_management(using=None): """ @@ -60,20 +67,14 @@ def leave_transaction_management(using=None): over to the surrounding block, as a commit will commit all changes, even those from outside. (Commits are on connection level.) """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.leave_transaction_management() + get_connection(using).leave_transaction_management() def is_dirty(using=None): """ Returns True if the current transaction requires a commit for changes to happen. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - return connection.is_dirty() + return get_connection(using).is_dirty() def set_dirty(using=None): """ @@ -81,10 +82,7 @@ def set_dirty(using=None): to decide in a managed block of code to decide whether there are open changes waiting for commit. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.set_dirty() + get_connection(using).set_dirty() def set_clean(using=None): """ @@ -92,25 +90,19 @@ def set_clean(using=None): to decide in a managed block of code to decide whether a commit or rollback should happen. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.set_clean() + get_connection(using).set_clean() def clean_savepoints(using=None): - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.clean_savepoints() + """ + Resets the counter used to generate unique savepoint ids in this thread. + """ + get_connection(using).clean_savepoints() def is_managed(using=None): """ Checks whether the transaction manager is in manual or in auto state. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - return connection.is_managed() + return get_connection(using).is_managed() def managed(flag=True, using=None): """ @@ -119,46 +111,35 @@ def managed(flag=True, using=None): management and there is a pending commit/rollback, the data will be commited. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.managed(flag) + get_connection(using).managed(flag) def commit_unless_managed(using=None): """ Commits changes if the system is not in managed transaction mode. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.commit_unless_managed() + get_connection(using).commit_unless_managed() def rollback_unless_managed(using=None): """ Rolls back changes if the system is not in managed transaction mode. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.rollback_unless_managed() + get_connection(using).rollback_unless_managed() + +############### +# Public APIs # +############### def commit(using=None): """ Does the commit itself and resets the dirty flag. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.commit() + get_connection(using).commit() def rollback(using=None): """ This function does the rollback itself and resets the dirty flag. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.rollback() + get_connection(using).rollback() def savepoint(using=None): """ @@ -166,30 +147,21 @@ def savepoint(using=None): current transaction. Returns an identifier for the savepoint that will be used for the subsequent rollback or commit. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - return connection.savepoint() + return get_connection(using).savepoint() def savepoint_rollback(sid, using=None): """ Rolls back the most recent savepoint (if one exists). Does nothing if savepoints are not supported. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.savepoint_rollback(sid) + get_connection(using).savepoint_rollback(sid) def savepoint_commit(sid, using=None): """ Commits the most recent savepoint (if one exists). Does nothing if savepoints are not supported. """ - if using is None: - using = DEFAULT_DB_ALIAS - connection = connections[using] - connection.savepoint_commit(sid) + get_connection(using).savepoint_commit(sid) ############## # DECORATORS #