Skip to content
Snippets Groups Projects
rules.py 3.87 KiB
import rules

from aleksis.core.models import Group
from aleksis.core.util.predicates import (
    has_any_object,
    has_global_perm,
    has_object_perm,
    has_person,
    is_group_member,
)

from .models import Event, EventRegistration, Terms, Voucher
from .predicates import (
    is_own_registration,
    is_own_voucher,
    see_group_by_grouptype,
    see_owned_groups_members,
)

# View vouchers
view_vouchers_predicate = has_person & (
    has_global_perm("paweljong.view_voucher") | has_any_object("paweljong.view_voucher", Voucher)
)
rules.add_perm("paweljong.view_vouchers_rule", view_vouchers_predicate)

# Edit vouchers
change_vouchers_predicate = has_person & (
    has_global_perm("paweljong.change_voucher")
    | has_any_object("paweljong.change_voucher", Voucher)
)
rules.add_perm("paweljong.change_vouchers_rule", change_vouchers_predicate)


# Delete vouchers
delete_vouchers_predicate = has_person & (
    has_global_perm("paweljong.delete_voucher")
    | has_any_object("paweljong.delete_voucher", Voucher)
)
rules.add_perm("paweljong.delete_vouchers_rule", delete_vouchers_predicate)

# Create vouchers
create_vouchers_predicate = has_person & (
    has_global_perm("paweljong.create_voucher")
    | has_any_object("paweljong.create_voucher", Voucher)
)
rules.add_perm("paweljong.create_vouchers_rule", create_vouchers_predicate)

# Edit events
change_events_predicate = has_person & (
    has_global_perm("paweljong.change_event") | has_any_object("paweljong.change_event", Event)
)
rules.add_perm("paweljong.change_events_rule", change_events_predicate)


# Delete events
delete_events_predicate = has_person & (
    has_global_perm("paweljong.delete_event") | has_any_object("paweljong.delete_event", Event)
)
rules.add_perm("paweljong.delete_events_rule", delete_events_predicate)

# Create events
create_events_predicate = has_person & (
    has_global_perm("paweljong.create_event") | has_any_object("paweljong.create_event", Event)
)
rules.add_perm("paweljong.create_events_rule", create_events_predicate)

# Allowed to see group
may_see_group_predicate = has_person & (
    is_group_member | has_any_object("core.view_group", Group) | see_group_by_grouptype
)
rules.add_perm("paweljong.may_see_group_rule", may_see_group_predicate)

may_see_person_predicate = has_person & (
    see_owned_groups_members | has_object_perm("core.view_person")
)
rules.add_perm("paweljong.see_person_rule", may_see_person_predicate)

# View registrations
view_registrations_predicate = has_person & (
    has_global_perm("paweljong.view_eventregistration")
    | has_any_object("paweljong.view_eventregistration", EventRegistration)
)
rules.add_perm("paweljong.view_registrations_rule", view_registrations_predicate)


# Manage registrations
manage_registrations_predicate = has_person & (
    has_global_perm("paweljong.manage_registration")
    | is_own_registration
    | has_any_object("paweljong.manage_registration", EventRegistration)
)
rules.add_perm("paweljong.manage_registrations_rule", manage_registrations_predicate)

# Delete registrations
delete_registrations_predicate = has_person & (
    has_global_perm("paweljong.delete_eventregistration")
    | has_any_object("paweljong.delete_eventregistration", EventRegistration)
)
rules.add_perm("paweljong.delete_registrations_rule", delete_registrations_predicate)


# Is own voucher?
is_own_voucher_predicate = has_person & (is_own_voucher)
rules.add_perm("paweljong.is_own_voucher_rule", is_own_voucher_predicate)


# View terms
view_terms_predicate = has_person & (
    has_global_perm("paweljong.view_term") | has_any_object("paweljong.view_term", Terms)
)
rules.add_perm("paweljong.view_terms_rule", view_terms_predicate)


# View info_mailings
view_info_mailings_predicate = has_person & (
    has_global_perm("paweljong.view_info_mailing")
    | has_any_object("paweljong.view_info_mailing", Terms)
)
rules.add_perm("paweljong.view_info_mailings_rule", view_info_mailings_predicate)