From 56ca75ed0fd1c5f21b770663bd67bb24ef946ecd Mon Sep 17 00:00:00 2001 From: Hangzhi <hangzhi@protonmail.com> Date: Sun, 3 May 2020 12:55:50 +0200 Subject: [PATCH] Add predicate builder for site preferences check --- aleksis/core/util/predicates.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/aleksis/core/util/predicates.py b/aleksis/core/util/predicates.py index f57b55620..6c7dc95a0 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.""" -- GitLab