Skip to content
Snippets Groups Projects
rules.py 4.05 KiB
Newer Older
magicfelix's avatar
magicfelix committed
import rules

from aleksis.apps.kolego.models.absence import Absence, AbsenceReason, AbsenceReasonTag
magicfelix's avatar
magicfelix committed
from aleksis.core.util.predicates import (
Jonathan Weth's avatar
Jonathan Weth committed
    has_any_object,
magicfelix's avatar
magicfelix committed
    has_global_perm,
    has_object_perm,
    has_person,
)

from .util.predicates import can_manage_absence, can_manage_absences_for_person
Jonathan Weth's avatar
Jonathan Weth committed
view_absences_predicate = has_person & (
    has_global_perm("kolego.view_absence") | has_any_object("kolego.view_absence", Absence)
)
rules.add_perm("kolego.view_absences_rule", view_absences_predicate)

view_absence_predicate = has_person & (
    has_global_perm("kolego.view_absence") | has_object_perm("kolego.view_absence")
)
rules.add_perm("kolego.view_absence_rule", view_absence_predicate)

Jonathan Weth's avatar
Jonathan Weth committed
create_absence_predicate = has_person & (has_global_perm("kolego.add_absence"))
magicfelix's avatar
magicfelix committed
rules.add_perm("kolego.create_absence_rule", create_absence_predicate)
Jonathan Weth's avatar
Jonathan Weth committed

magicfelix's avatar
magicfelix committed
edit_absence_predicate = has_person & (
    has_global_perm("kolego.change_absence")
    | has_object_perm("kolego.change_absence")
    | can_manage_absence
magicfelix's avatar
magicfelix committed
)
rules.add_perm("kolego.edit_absence_rule", edit_absence_predicate)

delete_absence_predicate = has_person & (
    has_global_perm("kolego.delete_absence")
    | has_object_perm("kolego.delete_absence")
    | can_manage_absence
magicfelix's avatar
magicfelix committed
)
rules.add_perm("kolego.delete_absence_rule", delete_absence_predicate)

fetch_absencereasons_predicate = has_person
rules.add_perm("kolego.fetch_absencereasons_rule", fetch_absencereasons_predicate)

Jonathan Weth's avatar
Jonathan Weth committed
view_absencereasons_predicate = has_person & (
    has_global_perm("kolego.view_absencereason")
    | has_any_object("kolego.view_absencereason", AbsenceReason)
)
rules.add_perm("kolego.view_absencereasons_rule", view_absencereasons_predicate)

view_absencereason_predicate = has_person & (
    has_global_perm("kolego.view_absencereason") | has_object_perm("kolego.view_absencereason")
)
rules.add_perm("kolego.view_absencereason_rule", view_absencereason_predicate)

Jonathan Weth's avatar
Jonathan Weth committed
create_absencereason_predicate = has_person & (has_global_perm("kolego.add_absencereason"))
magicfelix's avatar
magicfelix committed
rules.add_perm("kolego.create_absencereason_rule", create_absencereason_predicate)

magicfelix's avatar
magicfelix committed
edit_absencereason_predicate = has_person & (
    has_global_perm("kolego.change_absencereason") | has_object_perm("kolego.change_absencereason")
)
rules.add_perm("kolego.edit_absencereason_rule", edit_absencereason_predicate)

delete_absencereason_predicate = has_person & (
    has_global_perm("kolego.delete_absencereason") | has_object_perm("kolego.delete_absencereason")
)
rules.add_perm("kolego.delete_absencereason_rule", delete_absencereason_predicate)
magicfelix's avatar
magicfelix committed

view_absencereasontags_predicate = has_person & (
    has_global_perm("kolego.view_absencereasontag")
    | has_any_object("kolego.view_absencereasontag", AbsenceReasonTag)
)
rules.add_perm("kolego.view_absencereasontags_rule", view_absencereasontags_predicate)

view_absencereasontag_predicate = has_person & (
    has_global_perm("kolego.view_absencereasontag")
    | has_object_perm("kolego.view_absencereasontag")
)
rules.add_perm("kolego.view_absencereasontag_rule", view_absencereasontag_predicate)

create_absencereasontag_predicate = has_person & (has_global_perm("kolego.add_absencereasontag"))
rules.add_perm("kolego.create_absencereasontag_rule", create_absencereasontag_predicate)

edit_absencereasontag_predicate = has_person & (
    has_global_perm("kolego.change_absencereasontag")
    | has_object_perm("kolego.change_absencereasontag")
)
rules.add_perm("kolego.edit_absencereasontag_rule", edit_absencereasontag_predicate)

delete_absencereasontag_predicate = has_person & (
    has_global_perm("kolego.delete_absencereasontag")
    | has_object_perm("kolego.delete_absencereasontag")
)
rules.add_perm("kolego.delete_absencereasontag_rule", delete_absencereasontag_predicate)

view_menu_predicate = has_person & (
    view_absences_predicate | view_absencereasons_predicate | view_absencereasontags_predicate
)
magicfelix's avatar
magicfelix committed
rules.add_perm("kolego.view_menu_rule", view_menu_predicate)

view_person_absences_predicate = has_person & (
    has_global_perm("kolego.view_absence") | can_manage_absences_for_person
)
rules.add_perm("kolego.view_person_absences_rule", view_person_absences_predicate)