import rules from aleksis.apps.kolego.models.absence import Absence, AbsenceReason, AbsenceReasonTag from aleksis.core.util.predicates import ( has_any_object, has_global_perm, has_object_perm, has_person, ) from .util.predicates import can_manage_absence, can_manage_absences_for_person 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) create_absence_predicate = has_person & (has_global_perm("kolego.add_absence")) rules.add_perm("kolego.create_absence_rule", create_absence_predicate) edit_absence_predicate = has_person & ( has_global_perm("kolego.change_absence") | has_object_perm("kolego.change_absence") | can_manage_absence ) 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 ) 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) 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) create_absencereason_predicate = has_person & (has_global_perm("kolego.add_absencereason")) rules.add_perm("kolego.create_absencereason_rule", create_absencereason_predicate) 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) 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 ) 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)