From 2010326ca8f97ca05ebb9ec22b4ae095726dc44c Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 21 Jul 2023 20:16:36 +0200 Subject: [PATCH] Fix holiday permissions --- aleksis/core/rules.py | 27 ++++++++++++++++++++++++++- aleksis/core/schema/holiday.py | 13 +++++++------ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/aleksis/core/rules.py b/aleksis/core/rules.py index ae2f12129..2251a5044 100644 --- a/aleksis/core/rules.py +++ b/aleksis/core/rules.py @@ -1,7 +1,7 @@ import rules from rules import is_superuser -from .models import AdditionalField, Announcement, Group, GroupType, Person +from .models import AdditionalField, Announcement, Group, GroupType, Holiday, Person from .util.predicates import ( has_any_object, has_global_perm, @@ -412,3 +412,28 @@ rules.add_perm("core.view_progress_rule", view_progress_predicate) view_calendar_feed_predicate = has_person rules.add_perm("core.view_calendar_feed_rule", view_calendar_feed_predicate) + +# Holidays + +view_holiday_predicate = has_person & ( + has_global_perm("core.view_holiday") | has_object_perm("core.view_holiday") +) +rules.add_perm("core.view_holiday_rule", view_holiday_predicate) + +view_holidays_predicate = has_person & ( + has_global_perm("core.view_holiday") | has_any_object("core.view_holiday", Holiday) +) +rules.add_perm("core.view_holidays_rule", view_holidays_predicate) + +edit_holiday_predicate = has_person & ( + has_global_perm("core.change_holiday") | has_object_perm("core.change_holiday") +) +rules.add_perm("core.edit_holiday_rule", edit_holiday_predicate) + +create_holiday_predicate = has_person & (has_global_perm("core.add_holiday")) +rules.add_perm("core.create_holiday_rule", create_holiday_predicate) + +delete_holiday_predicate = has_person & ( + has_global_perm("core.delete_holiday") | has_object_perm("core.delete_holiday") +) +rules.add_perm("core.delete_holiday_rule", delete_holiday_predicate) diff --git a/aleksis/core/schema/holiday.py b/aleksis/core/schema/holiday.py index b742b373e..4ac8e8239 100644 --- a/aleksis/core/schema/holiday.py +++ b/aleksis/core/schema/holiday.py @@ -4,6 +4,7 @@ from graphene_django_cud.mutations import ( DjangoBatchPatchMutation, DjangoCreateMutation, ) +from guardian.shortcuts import get_objects_for_user from ..models import Holiday from .base import ( @@ -28,29 +29,29 @@ class HolidayType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): @classmethod def get_queryset(cls, queryset, info): - return queryset # FIXME filter this queryset based on permissions + return get_objects_for_user(info.context.user, "core.view_holiday", queryset) class HolidayCreateMutation(DjangoCreateMutation): class Meta: model = Holiday - permissions = ("core.create_holiday",) + permissions = ("core.create_holiday_rule",) only_fields = ("holiday_name", "date_start", "date_end") class HolidayDeleteMutation(DeleteMutation): klass = Holiday - permission_required = "core.delete_holiday" + permission_required = "core.delete_holiday_rule" class HolidayBatchDeleteMutation(PermissionBatchDeleteMixin, DjangoBatchDeleteMutation): class Meta: model = Holiday - permissions = ("core.delete_holiday",) + permissions = ("core.delete_holiday_rule",) class HolidayBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): class Meta: model = Holiday - permissions = ("core.change_holiday",) - only_fields = ("holiday_name", "date_start", "date_end") + permissions = ("core.edit_holiday_rule",) + only_fields = ("id", "holiday_name", "date_start", "date_end") -- GitLab