parent
499a745ae1
commit
2d8c132b18
|
@ -2,7 +2,6 @@ import warnings
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import signals
|
from django.core import signals
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
|
||||||
from django.db.utils import (DEFAULT_DB_ALIAS,
|
from django.db.utils import (DEFAULT_DB_ALIAS,
|
||||||
DataError, OperationalError, IntegrityError, InternalError,
|
DataError, OperationalError, IntegrityError, InternalError,
|
||||||
ProgrammingError, NotSupportedError, DatabaseError,
|
ProgrammingError, NotSupportedError, DatabaseError,
|
||||||
|
@ -13,11 +12,7 @@ from django.utils.functional import cached_property
|
||||||
__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
|
__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
|
||||||
'IntegrityError', 'DEFAULT_DB_ALIAS')
|
'IntegrityError', 'DEFAULT_DB_ALIAS')
|
||||||
|
|
||||||
|
connections = ConnectionHandler()
|
||||||
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)
|
|
||||||
|
|
||||||
router = ConnectionRouter(settings.DATABASE_ROUTERS)
|
router = ConnectionRouter(settings.DATABASE_ROUTERS)
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import warnings
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
from django.utils.functional import cached_property
|
||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
from django.utils.module_loading import import_by_path
|
from django.utils.module_loading import import_by_path
|
||||||
from django.utils._os import upath
|
from django.utils._os import upath
|
||||||
|
@ -138,16 +139,27 @@ class ConnectionDoesNotExist(Exception):
|
||||||
|
|
||||||
|
|
||||||
class ConnectionHandler(object):
|
class ConnectionHandler(object):
|
||||||
def __init__(self, databases):
|
def __init__(self, databases=None):
|
||||||
if not databases:
|
"""
|
||||||
self.databases = {
|
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: {
|
DEFAULT_DB_ALIAS: {
|
||||||
'ENGINE': 'django.db.backends.dummy',
|
'ENGINE': 'django.db.backends.dummy',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
else:
|
if DEFAULT_DB_ALIAS not in self._databases:
|
||||||
self.databases = databases
|
raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
|
||||||
self._connections = local()
|
return self._databases
|
||||||
|
|
||||||
def ensure_defaults(self, alias):
|
def ensure_defaults(self, alias):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue