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) {
lessonEvent {
id
amends
amends {
id
}
datetimeStart
datetimeEnd
subject
teachers
groups
rooms
subject {
id
}
teachers {
id
}
groups {
id
}
rooms {
id
}
cancelled
comment
}
......
......@@ -99,16 +99,24 @@
<edit-button
i18n-key="chronos.event.amend.title"
@click="amendEvent.open = true"
/>
<dialog-object-form
v-model="amendEvent.open"
:fields="amendEvent.fields"
:default-item="amendEvent.default"
:is-create="true"
createItemI18nKey="chronos.event.amend.title"
:gql-create-mutation="amendEvent.gqlCreateMutation"
@cancel="amendEvent.open = false"
/>
/>
<dialog-object-form
v-model="amendEvent.open"
:fields="amendEvent.fields"
:default-item="amendEvent.default"
:is-create="true"
createItemI18nKey="chronos.event.amend.title"
:gql-create-mutation="amendEvent.gqlCreateMutation"
: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>
</template>
</base-calendar-feed-details>
......@@ -167,9 +175,6 @@ export default {
},
],
default: {
subject: "",
teachers: [],
rooms: [],
cancelled: false,
comment: ""
},
......@@ -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>
......@@ -2,7 +2,7 @@ import graphene
from graphene_django import DjangoObjectType
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 ..util.chronos_helpers import get_classes, get_rooms, get_teachers
......@@ -28,6 +28,19 @@ class TimetableRoomType(DjangoObjectType):
fields = ("id", "name", "short_name")
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 Meta:
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