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"], } class DocumentationCreateMutation(DjangoCreateMutation): class Meta: model = Documentation 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 = ("",) # FIXME @classmethod def before_mutate(cls, root, info, input): if "year" in input and "calendarWeek" in input: cw = CalendarWeek(year=input["year"], week=input["week"]) input["date_start"] = cw[0] input["date_end"] = cw[6] return input class DocumentationBatchCreateMutation(DjangoBatchCreateMutation): class Meta: model = Documentation fields = ("id", "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end") permissions = ("",) # FIXME class DocumentationDeleteMutation(DeleteMutation): klass = Documentation permission_required = "" # FIXME class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): class Meta: model = Documentation fields = ("id", "course", "lesson_event", "subject", "topic", "homework", "group_note", "datetime_start", "datetime_end", "date_start", "date_end") permissions = ("",) # FIXME