Skip to content
Snippets Groups Projects
extra_marks.py 1.9 KiB
Newer Older
from django.core.exceptions import PermissionDenied

Julian's avatar
Julian committed
from graphene_django import DjangoObjectType

from aleksis.apps.alsijil.models import ExtraMark
Julian's avatar
Julian committed
from aleksis.core.schema.base import (
    BaseBatchCreateMutation,
    BaseBatchDeleteMutation,
    BaseBatchPatchMutation,
    DjangoFilterMixin,
    OptimisticResponseTypeMixin,
    PermissionsTypeMixin,
)
Julian's avatar
Julian committed


class ExtraMarkType(
    OptimisticResponseTypeMixin,
    PermissionsTypeMixin,
    DjangoFilterMixin,
    DjangoObjectType,
):
    class Meta:
        model = ExtraMark
Julian's avatar
Julian committed
        fields = ("id", "short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook")

    @classmethod
    def get_queryset(cls, queryset, info):
        if info.context.user.has_perm("alsijil.fetch_extramarks_rule"):
            return queryset
        raise PermissionDenied()

Julian's avatar
Julian committed

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.create_extramark_rule"):
            return
        raise PermissionDenied()
Julian's avatar
Julian committed


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()
Julian's avatar
Julian committed


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()