Skip to content
Snippets Groups Projects
documentation.py 2.36 KiB
Newer Older
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