Skip to content
Snippets Groups Projects
Commit 61446c9c authored by magicfelix's avatar magicfelix
Browse files

Add permission checking

parent b0855414
No related branches found
No related tags found
1 merge request!7Resolve "Implement Absence model based on FreeBusy"
import rules
from aleksis.core.util.predicates import (
has_global_perm,
has_object_perm,
has_person,
)
edit_absence_predicate = has_person & (
has_global_perm("kolego.change_absence") | has_object_perm("kolego.change_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")
)
rules.add_perm("kolego.delete_absence_rule", delete_absence_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)
...@@ -32,6 +32,10 @@ class AbsenceReasonType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp ...@@ -32,6 +32,10 @@ class AbsenceReasonType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp
"name": ["icontains", "exact"], "name": ["icontains", "exact"],
} }
@classmethod
def get_queryset(cls, queryset, info):
return get_objects_for_user(info.context.user, "kolego.view_absencereason", queryset)
class AbsenceType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): class AbsenceType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
class Meta: class Meta:
...@@ -42,13 +46,17 @@ class AbsenceType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): ...@@ -42,13 +46,17 @@ class AbsenceType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
"comment": ["icontains", "exact"], "comment": ["icontains", "exact"],
} }
@classmethod
def get_queryset(cls, queryset, info):
return get_objects_for_user(info.context.user, "kolego.view_absence", queryset)
class AbsenceCreateMutation(DjangoCreateMutation): class AbsenceCreateMutation(DjangoCreateMutation):
class Meta: class Meta:
model = Absence model = Absence
fields = ("person", "reason", "comment", "datetime_start", "datetime_end") fields = ("person", "reason", "comment", "datetime_start", "datetime_end")
optional_fields = ("comment", "reason") optional_fields = ("comment", "reason")
permissions = ("",) # FIXME permissions = ("kolego.add_absence",) # FIXME
@classmethod @classmethod
def handle_datetime_start(cls, value, name, info) -> int: def handle_datetime_start(cls, value, name, info) -> int:
...@@ -70,19 +78,19 @@ class AbsenceBatchCreateMutation(DjangoBatchCreateMutation): ...@@ -70,19 +78,19 @@ class AbsenceBatchCreateMutation(DjangoBatchCreateMutation):
class Meta: class Meta:
model = Absence model = Absence
fields = ("id", "person", "reason", "comment", "datetime_start", "datetime_end") fields = ("id", "person", "reason", "comment", "datetime_start", "datetime_end")
permissions = ("",) # FIXME permissions = ("kolego.add_absence",) # FIXME
class AbsenceDeleteMutation(DeleteMutation): class AbsenceDeleteMutation(DeleteMutation):
klass = Absence klass = Absence
permission_required = "" # FIXME permission_required = "kolego.delete_absence" # FIXME
class AbsenceBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): class AbsenceBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation):
class Meta: class Meta:
model = Absence model = Absence
fields = ("id", "person", "reason", "comment", "datetime_start", "datetime_end") fields = ("id", "person", "reason", "comment", "datetime_start", "datetime_end")
permissions = ("",) # FIXME permissions = ("kolego.change_absence",) # FIXME
@classmethod @classmethod
def handle_datetime_start(cls, value, name, info) -> int: def handle_datetime_start(cls, value, name, info) -> int:
...@@ -105,7 +113,7 @@ class AbsenceReasonCreateMutation(DjangoCreateMutation): ...@@ -105,7 +113,7 @@ class AbsenceReasonCreateMutation(DjangoCreateMutation):
model = AbsenceReason model = AbsenceReason
fields = ("short_name", "name") fields = ("short_name", "name")
optional_fields = ("name",) optional_fields = ("name",)
permissions = ("",) # FIXME permissions = ("kolego.create_absencereason",) # FIXME
class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation): class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation):
...@@ -113,16 +121,16 @@ class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation): ...@@ -113,16 +121,16 @@ class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation):
model = AbsenceReason model = AbsenceReason
fields = ("short_name", "name") fields = ("short_name", "name")
optional_fields = ("name",) optional_fields = ("name",)
permissions = ("",) # FIXME permissions = ("kolego.create_absencereason",) # FIXME
class AbsenceReasonDeleteMutation(DeleteMutation): class AbsenceReasonDeleteMutation(DeleteMutation):
klass = AbsenceReason klass = AbsenceReason
permission_required = "" # FIXME permission_required = "kolego.delete_absencereason" # FIXME
class AbsenceReasonBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): class AbsenceReasonBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation):
class Meta: class Meta:
model = AbsenceReason model = AbsenceReason
fields = ("id", "short_name", "name") fields = ("id", "short_name", "name")
permissions = ("",) # FIXME permissions = ("kolego.change_absencereason",) # FIXME
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment