import threading
request_cfg = threading.local()
class RouterMiddleware (object):
def process_view( self, request, view_func, args, kwargs ):
# Here you could do something with request.path instead.
if 'cfg' in kwargs:
request_cfg.cfg = kwargs['cfg']
def process_response( self, request, response ):
if hasattr( request_cfg, 'cfg' ):
del request_cfg.cfg
return response
class DatabaseRouter (object):
def _default_db( self ):
from django.conf import settings
if hasattr( request_cfg, 'cfg' ) and request_cfg.cfg in settings.DATABASES:
return request_cfg.cfg
else:
return 'default'
def db_for_read( self, model, **hints ):
return self._default_db()
def db_for_write( self, model, **hints ):
return self._default_db()
Comments