summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-10-28 23:02:41 +0100
committerClaude Paroz <claude@2xlibre.net>2012-10-28 23:44:03 +0100
commitf1cc2be0c53858b673afc3b26347d3bb25e424f6 (patch)
tree309168042ee9e33d6a67ed851932a84d6bd700ab
parenteffe96b303aba45a88e1a24f613fef9ad974a53a (diff)
Fixed #18575 -- Empty DATABASES should default to dummy backend
Thanks delormemarco@gmail.com for the report.
-rw-r--r--django/conf/global_settings.py8
-rw-r--r--django/db/__init__.py2
-rw-r--r--django/db/utils.py9
-rw-r--r--tests/regressiontests/backends/tests.py11
4 files changed, 22 insertions, 8 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index f1cbb22880..84296c7493 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -150,12 +150,8 @@ SERVER_EMAIL = 'root@localhost'
# Whether to send broken-link emails.
SEND_BROKEN_LINK_EMAILS = False
-# Database connection info.
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.dummy',
- },
-}
+# Database connection info. If left empty, will default to the dummy backend.
+DATABASES = {}
# Classes used to implement DB routing behavior.
DATABASE_ROUTERS = []
diff --git a/django/db/__init__.py b/django/db/__init__.py
index 26c7add0af..b1980488df 100644
--- a/django/db/__init__.py
+++ b/django/db/__init__.py
@@ -8,7 +8,7 @@ __all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
'IntegrityError', 'DEFAULT_DB_ALIAS')
-if DEFAULT_DB_ALIAS not in settings.DATABASES:
+if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:
raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
connections = ConnectionHandler(settings.DATABASES)
diff --git a/django/db/utils.py b/django/db/utils.py
index 5fa78fe350..a91298626b 100644
--- a/django/db/utils.py
+++ b/django/db/utils.py
@@ -53,7 +53,14 @@ class ConnectionDoesNotExist(Exception):
class ConnectionHandler(object):
def __init__(self, databases):
- self.databases = databases
+ if not databases:
+ self.databases = {
+ DEFAULT_DB_ALIAS: {
+ 'ENGINE': 'django.db.backends.dummy',
+ },
+ }
+ else:
+ self.databases = databases
self._connections = local()
def ensure_defaults(self, alias):
diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py
index 4766dcf44e..14b3e0053c 100644
--- a/tests/regressiontests/backends/tests.py
+++ b/tests/regressiontests/backends/tests.py
@@ -23,6 +23,17 @@ from django.utils import unittest
from . import models
+class DummyBackendTest(TestCase):
+ def test_no_databases(self):
+ """
+ Test that empty DATABASES setting default to the dummy backend.
+ """
+ DATABASES = {}
+ conns = ConnectionHandler(DATABASES)
+ self.assertEqual(conns[DEFAULT_DB_ALIAS].settings_dict['ENGINE'],
+ 'django.db.backends.dummy')
+
+
class OracleChecks(unittest.TestCase):
@unittest.skipUnless(connection.vendor == 'oracle',