| 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:
|
|---|