Skip to content

Commit 094d079

Browse files
authored
Merge pull request #52 from Zxilly/master
fix: make filter query works with custom db_class
2 parents 9fc6b2b + 8ee69bc commit 094d079

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

casbin_sqlalchemy_adapter/adapter.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,16 @@ def __init__(self, engine, db_class=None, filtered=False):
5555
if db_class is None:
5656
db_class = CasbinRule
5757
else:
58-
for attr in ("ptype", "v0", "v1", "v2", "v3", "v4", "v5"):
58+
for attr in (
59+
"id",
60+
"ptype",
61+
"v0",
62+
"v1",
63+
"v2",
64+
"v3",
65+
"v4",
66+
"v5",
67+
): # id attr was used by filter
5968
if not hasattr(db_class, attr):
6069
raise Exception(f"{attr} not found in custom DatabaseClass.")
6170
Base.metadata = db_class.metadata
@@ -101,21 +110,12 @@ def load_filtered_policy(self, model, filter) -> None:
101110
self._filtered = True
102111

103112
def filter_query(self, querydb, filter):
104-
if len(filter.ptype) > 0:
105-
querydb = querydb.filter(CasbinRule.ptype.in_(filter.ptype))
106-
if len(filter.v0) > 0:
107-
querydb = querydb.filter(CasbinRule.v0.in_(filter.v0))
108-
if len(filter.v1) > 0:
109-
querydb = querydb.filter(CasbinRule.v1.in_(filter.v1))
110-
if len(filter.v2) > 0:
111-
querydb = querydb.filter(CasbinRule.v2.in_(filter.v2))
112-
if len(filter.v3) > 0:
113-
querydb = querydb.filter(CasbinRule.v3.in_(filter.v3))
114-
if len(filter.v4) > 0:
115-
querydb = querydb.filter(CasbinRule.v4.in_(filter.v4))
116-
if len(filter.v5) > 0:
117-
querydb = querydb.filter(CasbinRule.v5.in_(filter.v5))
118-
return querydb.order_by(CasbinRule.id)
113+
for attr in ("ptype", "v0", "v1", "v2", "v3", "v4", "v5"):
114+
if len(getattr(filter, attr)) > 0:
115+
querydb = querydb.filter(
116+
getattr(self._db_class, attr).in_(getattr(filter, attr))
117+
)
118+
return querydb.order_by(self._db_class.id)
119119

120120
def _save_policy_line(self, ptype, rule):
121121
with self._session_scope() as session:

0 commit comments

Comments
 (0)