summaryrefslogtreecommitdiff
path: root/www/py-django13/files/extra-patch-changeset_16520.diff
blob: 682a5bf113ba068e43db37cf109cd416881040c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
diff -uprN Django-1.3-vanilla/django/db/backends/creation.py Django-1.3/django/db/backends/creation.py
--- django/db/backends/creation.py	2011-02-02 12:02:14.000000000 -0200
+++ django/db/backends/creation.py	2011-07-16 20:21:28.000000000 -0300
@@ -413,7 +413,7 @@ class BaseDatabaseCreation(object):
         # if the database supports it because PostgreSQL doesn't allow
         # CREATE/DROP DATABASE statements within transactions.
         cursor = self.connection.cursor()
-        self.set_autocommit()
+        self._prepare_for_test_db_ddl()
         try:
             cursor.execute("CREATE DATABASE %s %s" % (qn(test_database_name), suffix))
         except Exception, e:
@@ -458,20 +458,27 @@ class BaseDatabaseCreation(object):
         # to do so, because it's not allowed to delete a database while being
         # connected to it.
         cursor = self.connection.cursor()
-        self.set_autocommit()
+        self._prepare_for_test_db_ddl()
         time.sleep(1) # To avoid "database is being accessed by other users" errors.
         cursor.execute("DROP DATABASE %s" % self.connection.ops.quote_name(test_database_name))
         self.connection.close()
 
     def set_autocommit(self):
-        "Make sure a connection is in autocommit mode."
-        if hasattr(self.connection.connection, "autocommit"):
-            if callable(self.connection.connection.autocommit):
-                self.connection.connection.autocommit(True)
-            else:
-                self.connection.connection.autocommit = True
-        elif hasattr(self.connection.connection, "set_isolation_level"):
-            self.connection.connection.set_isolation_level(0)
+        """
+        Make sure a connection is in autocommit mode. - Deprecated, not used
+        anymore by Django code. Kept for compatibility with user code that
+        might use it.
+        """
+        pass
+
+    def _prepare_for_test_db_ddl(self):
+        """
+        Internal implementation - Hook for tasks that should be performed before
+        the ``CREATE DATABASE``/``DROP DATABASE`` clauses used by testing code
+        to create/ destroy test databases. Needed e.g. in PostgreSQL to rollback
+        and close any active transaction.
+        """
+        pass
 
     def sql_table_creation_suffix(self):
         "SQL to append to the end of the test table creation statements"
diff -uprN Django-1.3-vanilla/django/db/backends/oracle/creation.py Django-1.3/django/db/backends/oracle/creation.py
--- django/db/backends/oracle/creation.py	2011-02-19 05:41:17.000000000 -0200
+++ django/db/backends/oracle/creation.py	2011-07-16 20:32:14.000000000 -0300
@@ -269,3 +269,6 @@ class DatabaseCreation(BaseDatabaseCreat
             settings_dict['NAME'],
             self._test_database_user(),
         )
+
+    def set_autocommit(self):
+        self.connection.connection.autocommit = True
diff -uprN Django-1.3-vanilla/django/db/backends/postgresql/creation.py Django-1.3/django/db/backends/postgresql/creation.py
--- django/db/backends/postgresql/creation.py	2010-07-29 23:54:47.000000000 -0300
+++ django/db/backends/postgresql/creation.py	2011-07-16 20:28:39.000000000 -0300
@@ -74,3 +74,11 @@ class DatabaseCreation(BaseDatabaseCreat
         else:
             output = []
         return output
+
+    def set_autocommit(self):
+        self._prepare_for_test_db_ddl()
+
+    def _prepare_for_test_db_ddl(self):
+        """Rollback and close the active transaction."""
+        self.connection.connection.rollback()
+        self.connection.connection.set_isolation_level(0)
diff -uprN Django-1.3-vanilla/django/db/backends/sqlite3/creation.py Django-1.3/django/db/backends/sqlite3/creation.py
--- django/db/backends/sqlite3/creation.py	2010-12-08 21:48:28.000000000 -0200
+++ django/db/backends/sqlite3/creation.py	2011-07-16 20:28:57.000000000 -0300
@@ -68,3 +68,6 @@ class DatabaseCreation(BaseDatabaseCreat
         if test_database_name and test_database_name != ":memory:":
             # Remove the SQLite database file
             os.remove(test_database_name)
+
+    def set_autocommit(self):
+        self.connection.connection.isolation_level = None