1111class Adapter (persist .Adapter ):
1212 """the interface for Casbin adapters."""
1313
14+ def __init__ (self , db_alias = "default" ):
15+ self .db_alias = db_alias
16+
1417 def load_policy (self , model ):
1518 """loads all policy rules from the storage."""
1619 try :
17- lines = CasbinRule .objects .all ()
20+ lines = CasbinRule .objects .using ( self . db_alias ). all ()
1821
1922 for line in lines :
2023 persist .load_policy_line (str (line ), model )
@@ -41,7 +44,7 @@ def save_policy(self, model):
4144 """saves all policy rules to the storage."""
4245 # See https://casbin.org/docs/en/adapters#autosave
4346 # for why this is deleting all rules
44- CasbinRule .objects .all ().delete ()
47+ CasbinRule .objects .using ( self . db_alias ). all ().delete ()
4548
4649 lines = []
4750 for sec in ["p" , "g" ]:
@@ -50,7 +53,7 @@ def save_policy(self, model):
5053 for ptype , ast in model .model [sec ].items ():
5154 for rule in ast .policy :
5255 lines .append (self ._create_policy_line (ptype , rule ))
53- CasbinRule .objects .bulk_create (lines )
56+ CasbinRule .objects .using ( self . db_alias ). bulk_create (lines )
5457 return True
5558
5659 def add_policy (self , sec , ptype , rule ):
@@ -63,7 +66,7 @@ def remove_policy(self, sec, ptype, rule):
6366 query_params = {"ptype" : ptype }
6467 for i , v in enumerate (rule ):
6568 query_params ["v{}" .format (i )] = v
66- rows_deleted , _ = CasbinRule .objects .filter (** query_params ).delete ()
69+ rows_deleted , _ = CasbinRule .objects .using ( self . db_alias ). filter (** query_params ).delete ()
6770 return True if rows_deleted > 0 else False
6871
6972 def remove_filtered_policy (self , sec , ptype , field_index , * field_values ):
@@ -77,5 +80,5 @@ def remove_filtered_policy(self, sec, ptype, field_index, *field_values):
7780 return False
7881 for i , v in enumerate (field_values ):
7982 query_params ["v{}" .format (i + field_index )] = v
80- rows_deleted , _ = CasbinRule .objects .filter (** query_params ).delete ()
83+ rows_deleted , _ = CasbinRule .objects .using ( self . db_alias ). filter (** query_params ).delete ()
8184 return True if rows_deleted > 0 else False
0 commit comments