from django.contrib.auth import get_user_model from rules import predicate from aleksis.core.models import Group, Person from aleksis.core.util.predicates import check_object_permission from .models import EventRegistration, Voucher User = get_user_model() @predicate def see_group_by_grouptype(user: User, group: Group) -> bool: """Predicate which checks if the user is allowed to see the groups GroupType.""" grouptype = group.group_type return check_object_permission(user, "core.view_grouptype", grouptype) @predicate def see_owned_groups_members(user: User, person: Person) -> bool: """Owners of groups can see their members.""" groups_list = user.person.owner_of.all().values_list("id", flat=True) return Person.member_of.filter(id__in=groups_list).exists() @predicate def is_own_voucher(user: User, voucher: Voucher) -> bool: """Predicate which checks if the voucher belongs to the user.""" return voucher.person == user.person @predicate def is_own_registration(user: User, registration: EventRegistration) -> bool: """Predicate which checks if the registration belongs to the user.""" return registration.person == user.person