@@ -19,7 +19,10 @@ def load_policy(self, model):
1919 self ._load_policy_file (model )
2020
2121 def save_policy (self , model ):
22- pass
22+ if not os .path .isfile (self ._file_path ):
23+ raise RuntimeError ("invalid file path, file path cannot be empty" )
24+
25+ self ._save_policy_file (model )
2326
2427 def _load_policy_file (self , model ):
2528 with open (self ._file_path , "rb" ) as file :
@@ -28,8 +31,25 @@ def _load_policy_file(self, model):
2831 persist .load_policy_line (line .decode ().strip (), model )
2932 line = file .readline ()
3033
31- def _save_policy_file (self , text ):
32- pass
34+ def _save_policy_file (self , model ):
35+ with open (self ._file_path , "w" ) as file :
36+ lines = []
37+
38+ if "p" in model .model .keys ():
39+ for key , ast in model .model ["p" ].items ():
40+ for pvals in ast .policy :
41+ lines .append (key + ', ' + ', ' .join (pvals ))
42+
43+ if "g" in model .model .keys ():
44+ for key , ast in model .model ["g" ].items ():
45+ for pvals in ast .policy :
46+ lines .append (key + ', ' + ', ' .join (pvals ))
47+
48+ for i , line in enumerate (lines ):
49+ if i != len (lines ) - 1 :
50+ lines [i ] += "\n "
51+
52+ file .writelines (lines )
3353
3454 def add_policy (self , sec , ptype , rule ):
3555 pass
0 commit comments