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()
