Skip to content

Commit 8b2ce54

Browse files
committed
policies/expression: add annotation to update docs, name jinja filters/funcs more clearly
1 parent 1b82283 commit 8b2ce54

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

passbook/policies/expression/evaluator.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from passbook.policies.struct import PolicyRequest, PolicyResult
1212

1313
if TYPE_CHECKING:
14-
from passbook.policies.expression.models import ExpressionPolicy
14+
from passbook.core.models import User
1515

1616

1717
class Evaluator:
@@ -21,29 +21,36 @@ class Evaluator:
2121

2222
def __init__(self):
2323
self._env = NativeEnvironment()
24-
self._env.filters["regex_match"] = Evaluator.jinja2_regex_match
25-
self._env.filters["regex_replace"] = Evaluator.jinja2_regex_replace
24+
# update passbook/policies/expression/templates/policy/expression/form.html
25+
# update docs/policies/expression/index.md
26+
self._env.filters["regex_match"] = Evaluator.jinja2_filter_regex_match
27+
self._env.filters["regex_replace"] = Evaluator.jinja2_filter_regex_replace
2628

2729
@staticmethod
28-
def jinja2_regex_match(value: Any, regex: str) -> bool:
30+
def jinja2_filter_regex_match(value: Any, regex: str) -> bool:
2931
"""Jinja2 Filter to run re.search"""
3032
return re.search(regex, value) is None
3133

3234
@staticmethod
33-
def jinja2_regex_replace(value: Any, regex: str, repl: str) -> str:
35+
def jinja2_filter_regex_replace(value: Any, regex: str, repl: str) -> str:
3436
"""Jinja2 Filter to run re.sub"""
3537
return re.sub(regex, repl, value)
3638

39+
@staticmethod
40+
def jinja2_func_is_group_member(user: "User", group_name: str) -> bool:
41+
"""Check if `user` is member of group with name `group_name`"""
42+
return user.groups.filter(name=group_name).exists()
43+
3744
def _get_expression_context(
3845
self, request: PolicyRequest, **kwargs
3946
) -> Dict[str, Any]:
4047
"""Return dictionary with additional global variables passed to expression"""
48+
# update passbook/policies/expression/templates/policy/expression/form.html
49+
# update docs/policies/expression/index.md
4150
kwargs["pb_is_sso_flow"] = request.user.session.get(
4251
AuthenticationView.SESSION_IS_SSO_LOGIN, False
4352
)
44-
kwargs["pb_is_group_member"] = lambda user, group: group.user_set.filter(
45-
pk=user.pk
46-
).exists()
53+
kwargs["pb_is_group_member"] = Evaluator.jinja2_func_is_group_member
4754
kwargs["pb_logger"] = get_logger()
4855
return kwargs
4956

0 commit comments

Comments
 (0)