Fixed #18575 -- Empty DATABASES should default to dummy backend
Thanks delormemarco@gmail.com for the report.
This commit is contained in:
parent
effe96b303
commit
f1cc2be0c5
|
@ -150,12 +150,8 @@ SERVER_EMAIL = 'root@localhost'
|
||||||
# Whether to send broken-link emails.
|
# Whether to send broken-link emails.
|
||||||
SEND_BROKEN_LINK_EMAILS = False
|
SEND_BROKEN_LINK_EMAILS = False
|
||||||
|
|
||||||
# Database connection info.
|
# Database connection info. If left empty, will default to the dummy backend.
|
||||||
DATABASES = {
|
DATABASES = {}
|
||||||
'default': {
|
|
||||||
'ENGINE': 'django.db.backends.dummy',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
# Classes used to implement DB routing behavior.
|
# Classes used to implement DB routing behavior.
|
||||||
DATABASE_ROUTERS = []
|
DATABASE_ROUTERS = []
|
||||||
|
|
|
@ -8,7 +8,7 @@ __all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
|
||||||
'IntegrityError', 'DEFAULT_DB_ALIAS')
|
'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)
|
raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
|
||||||
|
|
||||||
connections = ConnectionHandler(settings.DATABASES)
|
connections = ConnectionHandler(settings.DATABASES)
|
||||||
|
|
|
@ -53,7 +53,14 @@ class ConnectionDoesNotExist(Exception):
|
||||||
|
|
||||||
class ConnectionHandler(object):
|
class ConnectionHandler(object):
|
||||||
def __init__(self, databases):
|
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()
|
self._connections = local()
|
||||||
|
|
||||||
def ensure_defaults(self, alias):
|
def ensure_defaults(self, alias):
|
||||||
|
|
|
@ -23,6 +23,17 @@ from django.utils import unittest
|
||||||
from . import models
|
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):
|
class OracleChecks(unittest.TestCase):
|
||||||
|
|
||||||
@unittest.skipUnless(connection.vendor == 'oracle',
|
@unittest.skipUnless(connection.vendor == 'oracle',
|
||||||
|
|
Loading…
Reference in New Issue