@@ -127,12 +127,15 @@ def filter_query(self, querydb, filter):
127127 )
128128 return querydb .order_by (self ._db_class .id )
129129
130- def _save_policy_line (self , ptype , rule ):
131- with self ._session_scope () as session :
132- line = self . _db_class ( ptype = ptype )
133- for i , v in enumerate ( rule ):
134- setattr ( line , "v{}" . format ( i ), v )
130+ def _save_policy_line (self , ptype , rule , session = None ):
131+ line = self ._db_class ( ptype = ptype )
132+ for i , v in enumerate ( rule ):
133+ setattr ( line , "v{}" . format ( i ) , v )
134+ if session :
135135 session .add (line )
136+ else :
137+ with self ._session_scope () as session :
138+ session .add (line )
136139
137140 def save_policy (self , model ):
138141 """saves all policy rules to the storage."""
@@ -144,7 +147,7 @@ def save_policy(self, model):
144147 continue
145148 for ptype , ast in model .model [sec ].items ():
146149 for rule in ast .policy :
147- self ._save_policy_line (ptype , rule )
150+ self ._save_policy_line (ptype , rule , session = session )
148151 return True
149152
150153 def add_policy (self , sec , ptype , rule ):
0 commit comments