Skip to content

Commit 4fe6ac0

Browse files
committed
Built-in file adapter supports save_policy() now.
1 parent 43b84a3 commit 4fe6ac0

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

casbin/persist/adapters/file_adapter.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)