summaryrefslogtreecommitdiff
path: root/django/db/utils.py
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-05-21 11:35:05 +0200
committerClaude Paroz <claude@2xlibre.net>2013-05-23 15:19:12 +0200
commit2d8c132b187d9dfefe0f409c4fb39b54a6645675 (patch)
tree7cdea292171a57c88b5ad811f494da5377f51403 /django/db/utils.py
parent499a745ae1b53614035b9993b148f32d4ce3f138 (diff)
downloaddjango-2d8c132b187d9dfefe0f409c4fb39b54a6645675.tar.gz
Delayed settings.DATABASES usage by ConnectionHandler
Refs #20474.
Diffstat (limited to 'django/db/utils.py')
-rw-r--r--django/db/utils.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/django/db/utils.py b/django/db/utils.py
index e84060f9b3..0bc72fd768 100644
--- a/django/db/utils.py
+++ b/django/db/utils.py
@@ -6,6 +6,7 @@ import warnings
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
+from django.utils.functional import cached_property
from django.utils.importlib import import_module
from django.utils.module_loading import import_by_path
from django.utils._os import upath
@@ -138,16 +139,27 @@ class ConnectionDoesNotExist(Exception):
class ConnectionHandler(object):
- def __init__(self, databases):
- if not databases:
- self.databases = {
+ def __init__(self, databases=None):
+ """
+ databases is an optional dictionary of database definitions (structured
+ like settings.DATABASES).
+ """
+ self._databases = databases
+ self._connections = local()
+
+ @cached_property
+ def databases(self):
+ if self._databases is None:
+ self._databases = settings.DATABASES
+ if self._databases == {}:
+ self._databases = {
DEFAULT_DB_ALIAS: {
'ENGINE': 'django.db.backends.dummy',
},
}
- else:
- self.databases = databases
- self._connections = local()
+ if DEFAULT_DB_ALIAS not in self._databases:
+ raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
+ return self._databases
def ensure_defaults(self, alias):
"""