Skip to content
Snippets Groups Projects
predicates.py 903 B
from django.contrib.auth.models import User

from rules import predicate

from aleksis.core.models import Person
from aleksis.core.util.core_helpers import get_site_preferences

from ..models import Absence


@predicate
def can_manage_absences_for_person(user: User, obj: Person) -> bool:
    """Predicate for viewing absences of a person."""
    group_types = get_site_preferences()["alsijil__group_types_manage_person_absences"]
    if not group_types:
        return False
    qs = obj.member_of.filter(owners=user.person)
    return qs.filter(group_type__in=group_types).exists()


@predicate
def can_manage_absence(user: User, obj: Absence) -> bool:
    group_types = get_site_preferences()["alsijil__group_types_manage_person_absences"]
    if not group_types:
        return False
    qs = obj.person.member_of.filter(owners=user.person)
    return qs.filter(group_type__in=group_types).exists()