from django.core.exceptions import PermissionDenied import graphene from calendarweek import CalendarWeek from graphene_django import DjangoListField from graphene_django.types import DjangoObjectType from graphene_django_cud.mutations import ( DjangoBatchCreateMutation, DjangoBatchPatchMutation, DjangoCreateMutation, ) from guardian.shortcuts import get_objects_for_user from aleksis.core.schema.base import ( DeleteMutation, DjangoFilterMixin, PermissionBatchPatchMixin, PermissionsTypeMixin, ) from ..models import Documentation class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): class Meta: model = Documentation fields = ( "id", "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end", ) filter_fields = { "id": ["exact", "lte", "gte"], "course__name": ["exact"], } @classmethod def get_queryset(cls, queryset, info): return get_objects_for_user(info.context.user, "alsijil.view_documentation", queryset) class DocumentationCreateMutation(DjangoCreateMutation): class Meta: model = Documentation only_fields = ( "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end", ) optional_fields = ( "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end", ) permissions = ("alsijil.add_documentation",) # FIXME class DocumentationBatchCreateMutation(DjangoBatchCreateMutation): class Meta: model = Documentation only_fields = ( "id", "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end", ) permissions = ("alsijil.add_documentation",) # FIXME class DocumentationDeleteMutation(DeleteMutation): klass = Documentation permission_required = "alsijil.delete_documentation_rule" # FIXME class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): class Meta: model = Documentation only_fields = ( "id", "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end", ) permissions = ("alsijil.edit_documentation_rule",) # FIXME