Skip to content
Snippets Groups Projects
Verified Commit 2010326c authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Fix holiday permissions

parent 4171ebe7
No related branches found
No related tags found
1 merge request!1261Manage holidays
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)
......@@ -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")
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