Skip to content
Snippets Groups Projects
Commit 1be0db49 authored by permcu's avatar permcu
Browse files

Fix graphql amend lesson mutation

parent 52967280
No related branches found
No related tags found
1 merge request!310Resolve "Implement Vue substitution frontend"
Pipeline #144310 failed
mutation createAmendLesson($input: LessonEventInput!) { mutation createAmendLesson($input: CreateLessonEventInput!) {
amendLesson(input: $input) { amendLesson(input: $input) {
lessonEvent { lessonEvent {
id id
amends amends {
id
}
datetimeStart datetimeStart
datetimeEnd datetimeEnd
subject subject {
teachers id
groups }
rooms teachers {
id
}
groups {
id
}
rooms {
id
}
cancelled cancelled
comment comment
} }
......
...@@ -99,16 +99,24 @@ ...@@ -99,16 +99,24 @@
<edit-button <edit-button
i18n-key="chronos.event.amend.title" i18n-key="chronos.event.amend.title"
@click="amendEvent.open = true" @click="amendEvent.open = true"
/> />
<dialog-object-form <dialog-object-form
v-model="amendEvent.open" v-model="amendEvent.open"
:fields="amendEvent.fields" :fields="amendEvent.fields"
:default-item="amendEvent.default" :default-item="amendEvent.default"
:is-create="true" :is-create="true"
createItemI18nKey="chronos.event.amend.title" createItemI18nKey="chronos.event.amend.title"
:gql-create-mutation="amendEvent.gqlCreateMutation" :gql-create-mutation="amendEvent.gqlCreateMutation"
@cancel="amendEvent.open = false" :get-create-data="transformCreateData"
/> @cancel="amendEvent.open = false"
>
<template #cancelled.field="{ on, attrs }">
<v-checkbox
v-bind="attrs"
v-on="on"
/>
</template>
</dialog-object-form>
</v-card-actions> </v-card-actions>
</template> </template>
</base-calendar-feed-details> </base-calendar-feed-details>
...@@ -167,9 +175,6 @@ export default { ...@@ -167,9 +175,6 @@ export default {
}, },
], ],
default: { default: {
subject: "",
teachers: [],
rooms: [],
cancelled: false, cancelled: false,
comment: "" comment: ""
}, },
...@@ -177,5 +182,32 @@ export default { ...@@ -177,5 +182,32 @@ export default {
}, },
}; };
}, },
methods: {
toISODateTime(date) {
// Yes js date does not do timezone...
// -> Roll our own
const tzOffset = date.getTimezoneOffset(); // minutes
const tzSign = tzOffset < 0 ? '+' : '-';
const pad = n => `${Math.floor(Math.abs(n))}`.padStart(2, '0');
// const tzString = tzSign + pad(tzOffset / 60) + ':' + pad(tzOffset % 60);
const tzString = '';
return date.toISOString().replace('Z', tzString);
},
transformCreateData(item) {
console.log("in transformCreateData", item);
console.log("selectedEvent", this.selectedEvent);
console.log("start", this.selectedEvent.start);
console.log("startISO", this.toISODateTime(this.selectedEvent.start));
let next = {
...item,
// FIXME: Pass id directly & do not parse a string here.
amends: parseInt(this.selectedEvent.uid.split('-')[1]),
datetimeStart: this.toISODateTime(this.selectedEvent.start),
datetimeEnd: this.toISODateTime(this.selectedEvent.end),
};
console.log("in transformCreateData", next);
return next;
},
},
}; };
</script> </script>
...@@ -2,7 +2,7 @@ import graphene ...@@ -2,7 +2,7 @@ import graphene
from graphene_django import DjangoObjectType from graphene_django import DjangoObjectType
from graphene_django_cud.mutations import DjangoCreateMutation from graphene_django_cud.mutations import DjangoCreateMutation
from aleksis.core.models import Group, Person, Room from aleksis.core.models import Group, Person, Room, CalendarEvent
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
...@@ -28,6 +28,19 @@ class TimetableRoomType(DjangoObjectType): ...@@ -28,6 +28,19 @@ class TimetableRoomType(DjangoObjectType):
fields = ("id", "name", "short_name") fields = ("id", "name", "short_name")
skip_registry = True skip_registry = True
# There is another unrelated CalendarEventType in aleksis/core/schema/calendar
# This CalendarEventType is needed for the inherited amends field of LessonEvent
# to work in the graphql query.
class CalendarEventForLessonEventType(DjangoObjectType):
class Meta:
model = CalendarEvent
fields = ("id",
"amends",
"datetime_start",
"datetime_end")
class LessonEventType(DjangoObjectType): class LessonEventType(DjangoObjectType):
class Meta: class Meta:
model = LessonEvent model = LessonEvent
......
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