| 1 |
--- /home/app/django-hg/django/db/transaction.py 2008-06-25 06:00:27.000000000 -0700 |
|---|
| 2 |
+++ django/db/transaction.py 2009-01-05 06:25:50.000000000 -0800 |
|---|
| 3 |
@@ -218,9 +218,11 @@ |
|---|
| 4 |
def _commit_manually(*args, **kw): |
|---|
| 5 |
try: |
|---|
| 6 |
enter_transaction_management() |
|---|
| 7 |
+ connection._enter_transaction_management() |
|---|
| 8 |
managed(True) |
|---|
| 9 |
return func(*args, **kw) |
|---|
| 10 |
finally: |
|---|
| 11 |
+ connection._leave_transaction_management() |
|---|
| 12 |
leave_transaction_management() |
|---|
| 13 |
|
|---|
| 14 |
return wraps(func)(_commit_manually) |
|---|
| 15 |
--- /home/app/django-hg/django/db/backends/postgresql_psycopg2/base.py 2008-07-21 05:44:36.000000000 -0700 |
|---|
| 16 |
+++ django/db/backends/postgresql_psycopg2/base.py 2009-01-05 06:25:50.000000000 -0800 |
|---|
| 17 |
@@ -56,6 +56,26 @@ |
|---|
| 18 |
'iendswith': 'LIKE LOWER(%s)', |
|---|
| 19 |
} |
|---|
| 20 |
|
|---|
| 21 |
+ def _enter_transaction_management(self): |
|---|
| 22 |
+ """Manages the mapping of transaction management to isolation levels""" |
|---|
| 23 |
+ |
|---|
| 24 |
+ if getattr(self, '_isolation_level', 0) == 0: |
|---|
| 25 |
+ try: |
|---|
| 26 |
+ if self.connection != None: |
|---|
| 27 |
+ self.connection.set_isolation_level(1) |
|---|
| 28 |
+ finally: |
|---|
| 29 |
+ self._isolation_level = 1 |
|---|
| 30 |
+ |
|---|
| 31 |
+ def _leave_transaction_management(self): |
|---|
| 32 |
+ """Manages the mapping of transaction management to isolation levels""" |
|---|
| 33 |
+ |
|---|
| 34 |
+ if getattr(self, '_isolation_level', 1) == 1: |
|---|
| 35 |
+ try: |
|---|
| 36 |
+ if self.connection != None: |
|---|
| 37 |
+ self.connection.set_isolation_level(0) |
|---|
| 38 |
+ finally: |
|---|
| 39 |
+ self._isolation_level = 0 |
|---|
| 40 |
+ |
|---|
| 41 |
def _cursor(self, settings, *args, **kwargs): |
|---|
| 42 |
first_cursor = False |
|---|
| 43 |
if self.connection is None: |
|---|
| 44 |
@@ -73,8 +93,9 @@ |
|---|
| 45 |
if settings.DATABASE_PORT: |
|---|
| 46 |
conn_string += " port=%s" % settings.DATABASE_PORT |
|---|
| 47 |
self.connection = Database.connect(conn_string, **self.options) |
|---|
| 48 |
- self.connection.set_isolation_level(1) # make transactions transparent to all cursors |
|---|
| 49 |
self.connection.set_client_encoding('UTF8') |
|---|
| 50 |
+ # make transactions transparent to all cursors |
|---|
| 51 |
+ self.connection.set_isolation_level(getattr(self, '_isolation_level', 0)) |
|---|
| 52 |
cursor = self.connection.cursor(*args, **kwargs) |
|---|
| 53 |
cursor.tzinfo_factory = None |
|---|
| 54 |
if first_cursor: |
|---|