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