Skip to content
Snippets Groups Projects
Commit 19e2816e authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Adapt to CRUD refactoring

parent f0a822c1
No related branches found
No related tags found
1 merge request!310Resolve "Implement Vue substitution frontend"
...@@ -91,9 +91,9 @@ import { ...@@ -91,9 +91,9 @@ import {
gqlSubjects, gqlSubjects,
gqlPersons, gqlPersons,
gqlRooms, gqlRooms,
createAmendLesson, createAmendLessons,
patchAmendLesson, patchAmendLessons,
deleteAmendLesson, deleteAmendLessons,
} from "./amendLesson.graphql"; } from "./amendLesson.graphql";
export default { export default {
...@@ -140,10 +140,10 @@ export default { ...@@ -140,10 +140,10 @@ export default {
cancelled: this.selectedEvent.meta.cancelled, cancelled: this.selectedEvent.meta.cancelled,
comment: this.selectedEvent.meta.comment, comment: this.selectedEvent.meta.comment,
}, },
gqlCreateMutation: createAmendLesson, gqlCreateMutation: createAmendLessons,
gqlPatchMutation: patchAmendLesson, gqlPatchMutation: patchAmendLessons,
deleteEvent: false, deleteEvent: false,
gqlDeleteMutation: deleteAmendLesson, gqlDeleteMutation: deleteAmendLessons,
}; };
}, },
methods: { methods: {
......
...@@ -19,9 +19,9 @@ query gqlRooms { ...@@ -19,9 +19,9 @@ query gqlRooms {
} }
} }
mutation createAmendLesson($input: CreateLessonEventInput!) { mutation createAmendLessons($input: [BatchCreateLessonEventInput]!) {
createAmendLesson(input: $input) { createAmendLessons(input: $input) {
lessonEvent { items: lessonEvents {
id id
amends { amends {
id id
...@@ -46,9 +46,9 @@ mutation createAmendLesson($input: CreateLessonEventInput!) { ...@@ -46,9 +46,9 @@ mutation createAmendLesson($input: CreateLessonEventInput!) {
} }
} }
mutation patchAmendLesson($input: PatchLessonEventInput!, $id: ID!) { mutation patchAmendLessons($input: [BatchPatchLessonEventInput]!) {
patchAmendLesson(input: $input, id: $id) { patchAmendLessons(input: $input) {
lessonEvent { items: lessonEvents {
id id
subject { subject {
id id
...@@ -68,8 +68,8 @@ mutation patchAmendLesson($input: PatchLessonEventInput!, $id: ID!) { ...@@ -68,8 +68,8 @@ mutation patchAmendLesson($input: PatchLessonEventInput!, $id: ID!) {
} }
} }
mutation deleteAmendLesson($id: ID!) { mutation deleteAmendLessons($ids: [ID]!) {
deleteAmendLesson(id: $id) { deleteAmendLesson(ids: $ids) {
ok deletionCount
} }
} }
...@@ -2,10 +2,9 @@ from datetime import timezone ...@@ -2,10 +2,9 @@ from datetime import timezone
import graphene import graphene
from graphene_django import DjangoObjectType from graphene_django import DjangoObjectType
from graphene_django_cud.mutations import DjangoCreateMutation, DjangoPatchMutation from graphene_django_cud.mutations import DjangoBatchCreateMutation, DjangoBatchDeleteMutation, DjangoBatchPatchMutation
from aleksis.core.models import CalendarEvent, Group, Person, Room from aleksis.core.models import CalendarEvent, Group, Person, Room
from aleksis.core.schema.base import DeleteMutation
from ..models import LessonEvent from ..models import LessonEvent
from ..util.chronos_helpers import get_classes, get_rooms, get_teachers from ..util.chronos_helpers import get_classes, get_rooms, get_teachers
...@@ -56,6 +55,9 @@ class LessonEventType(DjangoObjectType): ...@@ -56,6 +55,9 @@ class LessonEventType(DjangoObjectType):
"cancelled", "cancelled",
"comment", "comment",
) )
filter_fields = {
"id": ["exact", "lte", "gte"],
}
class DatetimeTimezoneMixin: class DatetimeTimezoneMixin:
...@@ -77,20 +79,8 @@ class DatetimeTimezoneMixin: ...@@ -77,20 +79,8 @@ class DatetimeTimezoneMixin:
value = value.replace(tzinfo=timezone.utc) value = value.replace(tzinfo=timezone.utc)
return value return value
@classmethod
def before_save(cls, root, info, input, obj, patch_obj=False):
# before_save has different signatures for different mutations
# This handles create & patch
# https://graphene-django-cud.readthedocs.io/en/latest/guide/other-hooks.html?highlight=before_save#before-save
if patch_obj:
obj = patch_obj
obj.timezone = obj.amends.timezone
return obj
class AmendLessonBatchCreateMutation(DatetimeTimezoneMixin, DjangoBatchCreateMutation):
class AmendLessonCreateMutation(DatetimeTimezoneMixin, DjangoCreateMutation):
class Meta: class Meta:
model = LessonEvent model = LessonEvent
permissions = ("chronos.edit_substitution_rule",) permissions = ("chronos.edit_substitution_rule",)
...@@ -106,17 +96,30 @@ class AmendLessonCreateMutation(DatetimeTimezoneMixin, DjangoCreateMutation): ...@@ -106,17 +96,30 @@ class AmendLessonCreateMutation(DatetimeTimezoneMixin, DjangoCreateMutation):
"comment", "comment",
) )
@classmethod
def before_save(cls, root, info, input, created_objects):
for obj in created_objects:
obj.timezone = obj.amends.timezone
return created_objects
class AmendLessonPatchMutation(DatetimeTimezoneMixin, DjangoPatchMutation): class AmendLessonBatchPatchMutation(DatetimeTimezoneMixin, DjangoBatchPatchMutation):
class Meta: class Meta:
model = LessonEvent model = LessonEvent
permissions = ("chronos.edit_substitution_rule",) permissions = ("chronos.edit_substitution_rule",)
only_fields = ("subject", "teachers", "groups", "rooms", "cancelled", "comment") only_fields = ("subject", "teachers", "groups", "rooms", "cancelled", "comment")
@classmethod
def before_save(cls, root, info, input, updated_objects):
for obj in updated_objects:
obj.timezone = obj.amends.timezone
return updated_objects
class AmendLessonDeleteMutation(DeleteMutation): class AmendLessonBatchDeleteMutation(DjangoBatchDeleteMutation):
klass = LessonEvent class Meta:
permission_required = "chronos.edit_substitution_rule" model = LessonEvent
permissions = ("chronos.delete_substitution_rule",)
class TimetableType(graphene.Enum): class TimetableType(graphene.Enum):
...@@ -139,15 +142,6 @@ class TimetableObjectType(graphene.ObjectType): ...@@ -139,15 +142,6 @@ class TimetableObjectType(graphene.ObjectType):
return f"{root.type.value}-{root.id}" return f"{root.type.value}-{root.id}"
class LessonEventType(DjangoObjectType):
class Meta:
model = LessonEvent
fields = ("id",)
filter_fields = {
"id": ["exact", "lte", "gte"],
}
class Query(graphene.ObjectType): class Query(graphene.ObjectType):
timetable_teachers = graphene.List(TimetablePersonType) timetable_teachers = graphene.List(TimetablePersonType)
timetable_groups = graphene.List(TimetableGroupType) timetable_groups = graphene.List(TimetableGroupType)
...@@ -197,6 +191,6 @@ class Query(graphene.ObjectType): ...@@ -197,6 +191,6 @@ class Query(graphene.ObjectType):
class Mutation(graphene.ObjectType): class Mutation(graphene.ObjectType):
create_amend_lesson = AmendLessonCreateMutation.Field() create_amend_lessons = AmendLessonBatchCreateMutation.Field()
patch_amend_lesson = AmendLessonPatchMutation.Field() patch_amend_lessons = AmendLessonBatchPatchMutation.Field()
delete_amend_lesson = AmendLessonDeleteMutation.Field() delete_amend_lessons = AmendLessonBatchDeleteMutation.Field()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment