1+ import logging
12from django .conf import settings
23from django .db import connection
34from django .db .utils import OperationalError , ProgrammingError
45
56from casbin import Enforcer
67
78from .adapter import Adapter
9+ from .utils import import_class
10+
11+ logger = logging .getLogger (__name__ )
12+
813
914
1015class ProxyEnforcer (Enforcer ):
@@ -13,15 +18,22 @@ class ProxyEnforcer(Enforcer):
1318 def __init__ (self , * args , ** kwargs ):
1419 if self ._initialized :
1520 super ().__init__ (* args , ** kwargs )
21+ else :
22+ logger .info ('Deferring casbin enforcer initialisation until django is ready' )
1623
1724 def _load (self ):
1825 if self ._initialized == False :
26+ logger .info ('Performing deferred casbin enforcer initialisation' )
1927 self ._initialized = True
2028 model = getattr (settings , 'CASBIN_MODEL' )
2129 enable_log = getattr (settings , 'CASBIN_LOG_ENABLED' , False )
22- adapter = Adapter ()
30+ adapter_loc = getattr (settings , 'CASBIN_ADAPTER' , 'casbin_adapter.adapter.Adapter' )
31+ adapter_args = getattr (settings , 'CASBIN_ADAPTER_ARGS' , tuple ())
32+ Adapter = import_class (adapter_loc )
33+ adapter = Adapter (* adapter_args )
2334
2435 super ().__init__ (model , adapter , enable_log )
36+ logger .debug ('Casbin enforcer initialised' )
2537
2638 watcher = getattr (settings , 'CASBIN_WATCHER' , None )
2739 if watcher :
0 commit comments