diff --git a/aleksis/core/util/predicates.py b/aleksis/core/util/predicates.py index f57b55620e2f7d32136f7b96c1fc869e245ca757..6c7dc95a08125ab27886aa48742ec4fd40a81244 100644 --- a/aleksis/core/util/predicates.py +++ b/aleksis/core/util/predicates.py @@ -8,6 +8,7 @@ from guardian.shortcuts import get_objects_for_user from rules import predicate from ..models import Group +from .core_helpers import get_site_preferences from .core_helpers import has_person as has_person_helper @@ -66,6 +67,19 @@ def has_any_object(perm: str, klass): return fn +def check_site_preference(section: str, pref: str): + """Builds predicate which checks the boolean value of a given site preference""" + name = f"check_site_preference:{section}__{pref}" + + @predicate(name) + def fn() -> bool: + if isinstance(get_site_preferences()[f"{section}__{pref}"], bool): + return get_site_preferences()[f"{section}__{pref}"] + return False + + return fn + + @predicate def has_person(user: User) -> bool: """Predicate which checks whether a user has a linked person."""