from django.core.exceptions import PermissionDenied from graphene_django import DjangoObjectType from guardian.shortcuts import get_objects_for_user from aleksis.apps.alsijil.models import ExtraMark from aleksis.core.schema.base import ( BaseBatchCreateMutation, BaseBatchDeleteMutation, BaseBatchPatchMutation, DjangoFilterMixin, OptimisticResponseTypeMixin, PermissionsTypeMixin, ) from aleksis.core.util.core_helpers import has_person class ExtraMarkType( OptimisticResponseTypeMixin, PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType, ): class Meta: model = ExtraMark fields = ("id", "short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook") @classmethod def get_queryset(cls, queryset, info): if has_person(info.context.user): return get_objects_for_user(info.context.user, "alsijil.view_extramark", queryset) raise PermissionDenied() class ExtraMarkBatchCreateMutation(BaseBatchCreateMutation): class Meta: model = ExtraMark fields = ("short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook") optional_fields = ("name",) @classmethod def check_permissions(cls, root, info, input): # noqa if info.context.user.has_perm("alsijil.add_extramark_rule"): return raise PermissionDenied() class ExtraMarkBatchDeleteMutation(BaseBatchDeleteMutation): class Meta: model = ExtraMark @classmethod def check_permissions(cls, root, info, input): # noqa if info.context.user.has_perm("alsijil.delete_extramark_rule"): return raise PermissionDenied() class ExtraMarkBatchPatchMutation(BaseBatchPatchMutation): class Meta: model = ExtraMark fields = ("id", "short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook") @classmethod def check_permissions(cls, root, info, input): # noqa if info.context.user.has_perm("alsijil.edit_extramark_rule"): return raise PermissionDenied()