From 9a74e7c5e904f6a3d8aeaa25c2e7aa09bcfbe601 Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Mon, 12 Feb 2024 22:54:55 +0100
Subject: [PATCH 1/8] Update core dep and python version

---
 pyproject.toml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index 130dc4e..a388063 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -33,8 +33,8 @@ name = "gitlab"
 url = "https://edugit.org/api/v4/projects/461/packages/pypi/simple"
 priority = "supplemental"
 [tool.poetry.dependencies]
-python = "^3.9"
-aleksis-core = "^4.0.0.dev0"
+python = "^3.10"
+aleksis-core = "^4.0.0.dev3"
 
 [tool.poetry.plugins."aleksis.app"]
 cursus = "aleksis.apps.cursus.apps:DefaultConfig"
-- 
GitLab


From 4b4455e8e680cb818531ed4573852a897095eb21 Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Mon, 12 Feb 2024 22:55:41 +0100
Subject: [PATCH 2/8] Adapt to refactored CRUD lists

---
 .../cursus/frontend/components/Course.vue     | 37 ++++++++---------
 .../frontend/components/CreateCourse.vue      |  2 +-
 .../frontend/components/SchoolStructure.vue   |  8 ++--
 .../cursus/frontend/components/Subject.vue    | 33 +++++++--------
 .../frontend/components/SubjectField.vue      |  8 ++--
 .../cursus/frontend/components/course.graphql | 36 ++--------------
 .../components/schoolStructure.graphql        | 12 +++---
 .../frontend/components/subject.graphql       | 14 ++-----
 aleksis/apps/cursus/schema.py                 | 41 +++++--------------
 9 files changed, 62 insertions(+), 129 deletions(-)

diff --git a/aleksis/apps/cursus/frontend/components/Course.vue b/aleksis/apps/cursus/frontend/components/Course.vue
index 6e1b845..e086933 100644
--- a/aleksis/apps/cursus/frontend/components/Course.vue
+++ b/aleksis/apps/cursus/frontend/components/Course.vue
@@ -17,7 +17,6 @@ import SubjectField from "./SubjectField.vue";
     :gql-create-mutation="gqlCreateMutation"
     :gql-patch-mutation="gqlPatchMutation"
     :gql-delete-mutation="gqlDeleteMutation"
-    :gql-delete-multiple-mutation="gqlDeleteMultipleMutation"
     :default-item="defaultItem"
     :get-create-data="transformCreateData"
     :get-patch-data="transformPatchData"
@@ -126,8 +125,7 @@ import SubjectField from "./SubjectField.vue";
 <script>
 import {
   courses,
-  createCourse,
-  deleteCourse,
+  createCourses,
   deleteCourses,
   updateCourses,
 } from "./course.graphql";
@@ -163,10 +161,9 @@ export default {
       ],
       i18nKey: "cursus.course",
       gqlQuery: courses,
-      gqlCreateMutation: createCourse,
+      gqlCreateMutation: createCourses,
       gqlPatchMutation: updateCourses,
-      gqlDeleteMutation: deleteCourse,
-      gqlDeleteMultipleMutation: deleteCourses,
+      gqlDeleteMutation: deleteCourses,
       defaultItem: {
         name: "",
         subject: null,
@@ -190,22 +187,20 @@ export default {
     };
   },
   methods: {
-    transformPatchData(items, headers) {
-      return items.map((item) => {
-        let dto = {};
-        headers.map((header) => {
-          if (header.value === "subject") {
-            dto["subject"] = item.subject?.id;
-          } else if (header.value === "groups") {
-            dto["groups"] = item.groups.map((group) => group.id);
-          } else if (header.value === "teachers") {
-            dto["teachers"] = item.teachers.map((teacher) => teacher.id);
-          } else {
-            dto[header.value] = item[header.value];
-          }
-        });
-        return dto;
+    transformPatchData(item) {
+      let dto = {"id": item.id};
+      this.headers.map((header) => {
+        if (header.value === "subject") {
+          dto["subject"] = item.subject?.id;
+        } else if (header.value === "groups") {
+          dto["groups"] = item.groups.map((group) => group.id);
+        } else if (header.value === "teachers") {
+          dto["teachers"] = item.teachers.map((teacher) => teacher.id);
+        } else {
+          dto[header.value] = item[header.value];
+        }
       });
+      return dto;
     },
     transformCreateData(item) {
       return {
diff --git a/aleksis/apps/cursus/frontend/components/CreateCourse.vue b/aleksis/apps/cursus/frontend/components/CreateCourse.vue
index 877fc35..81b2b6a 100644
--- a/aleksis/apps/cursus/frontend/components/CreateCourse.vue
+++ b/aleksis/apps/cursus/frontend/components/CreateCourse.vue
@@ -101,7 +101,7 @@ import CreateSubject from "./CreateSubject.vue";
 <script>
 import DialogObjectForm from "aleksis.core/components/generic/dialogs/DialogObjectForm.vue";
 
-import { subjects, createSubject } from "./subject.graphql";
+import { subjects, createSubjects } from "./subject.graphql";
 
 import { gqlGroups, gqlPersons } from "./helper.graphql";
 
diff --git a/aleksis/apps/cursus/frontend/components/SchoolStructure.vue b/aleksis/apps/cursus/frontend/components/SchoolStructure.vue
index e49a9e1..4ebb93e 100644
--- a/aleksis/apps/cursus/frontend/components/SchoolStructure.vue
+++ b/aleksis/apps/cursus/frontend/components/SchoolStructure.vue
@@ -14,7 +14,7 @@ import SchoolTermField from "aleksis.core/components/school_term/SchoolTermField
       :default-item="createGradeDefaultItem"
       :is-create="true"
       create-item-i18n-key="cursus.school_structure.add_grade"
-      :gql-create-mutation="gqlCreateGrade"
+      :gql-create-mutation="gqlCreateGrades"
       :get-create-data="transformCreateGradeItem"
       @cancel="createGradeForm = false"
       @save="updateSchoolStructure"
@@ -26,7 +26,7 @@ import SchoolTermField from "aleksis.core/components/school_term/SchoolTermField
       :default-item="createClassDefaultItem"
       :is-create="true"
       create-item-i18n-key="cursus.school_structure.add_class"
-      :gql-create-mutation="gqlCreateClass"
+      :gql-create-mutation="gqlCreateClasses"
       :get-create-data="transformCreateClassItemForGrade"
       @cancel="createClassForm = false"
       @save="updateSchoolStructure"
@@ -148,8 +148,8 @@ import SchoolTermField from "aleksis.core/components/school_term/SchoolTermField
 <script>
 import {
   gqlSchoolGrades,
-  gqlCreateGrade,
-  gqlCreateClass,
+  gqlCreateGrades,
+  gqlCreateClasses,
 } from "./schoolStructure.graphql";
 
 export default {
diff --git a/aleksis/apps/cursus/frontend/components/Subject.vue b/aleksis/apps/cursus/frontend/components/Subject.vue
index 60671ce..4f491d3 100644
--- a/aleksis/apps/cursus/frontend/components/Subject.vue
+++ b/aleksis/apps/cursus/frontend/components/Subject.vue
@@ -17,7 +17,6 @@ import SubjectChip from "./SubjectChip.vue";
     :gql-create-mutation="gqlCreateMutation"
     :gql-patch-mutation="gqlPatchMutation"
     :gql-delete-mutation="gqlDeleteMutation"
-    :gql-delete-multiple-mutation="gqlDeleteMultipleMutation"
     :default-item="defaultItem"
     :get-create-data="transformCreateData"
     :get-patch-data="transformPatchData"
@@ -143,8 +142,7 @@ import SubjectChip from "./SubjectChip.vue";
 <script>
 import {
   subjects,
-  createSubject,
-  deleteSubject,
+  createSubjects,
   deleteSubjects,
   updateSubjects,
 } from "./subject.graphql";
@@ -183,10 +181,9 @@ export default {
       ],
       i18nKey: "cursus.subject",
       gqlQuery: subjects,
-      gqlCreateMutation: createSubject,
+      gqlCreateMutation: createSubjects,
       gqlPatchMutation: updateSubjects,
-      gqlDeleteMutation: deleteSubject,
-      gqlDeleteMultipleMutation: deleteSubjects,
+      gqlDeleteMutation: deleteSubjects,
       defaultItem: {
         name: "",
         shortName: "",
@@ -209,20 +206,18 @@ export default {
     };
   },
   methods: {
-    transformPatchData(items, headers) {
-      return items.map((item) => {
-        let dto = {};
-        headers.map((header) => {
-          if (header.value === "parent") {
-            dto["parent"] = item.parent?.id;
-          } else if (header.value === "teachers") {
-            dto["teachers"] = item.teachers.map((teacher) => teacher.id);
-          } else {
-            dto[header.value] = item[header.value];
-          }
-        });
-        return dto;
+    transformPatchData(item) {
+      let dto = {"id": item.id};
+      this.headers.map((header) => {
+        if (header.value === "parent") {
+          dto["parent"] = item.parent?.id;
+        } else if (header.value === "teachers") {
+          dto["teachers"] = item.teachers.map((teacher) => teacher.id);
+        } else {
+          dto[header.value] = item[header.value];
+        }
       });
+      return dto;
     },
     transformCreateData(item) {
       return {
diff --git a/aleksis/apps/cursus/frontend/components/SubjectField.vue b/aleksis/apps/cursus/frontend/components/SubjectField.vue
index 6788d7e..8f8f45f 100644
--- a/aleksis/apps/cursus/frontend/components/SubjectField.vue
+++ b/aleksis/apps/cursus/frontend/components/SubjectField.vue
@@ -31,8 +31,7 @@ import SubjectChip from "./SubjectChip.vue";
 <script>
 import {
   subjects,
-  createSubject,
-  deleteSubject,
+  createSubjects,
   deleteSubjects,
   updateSubjects,
 } from "./subject.graphql";
@@ -71,10 +70,9 @@ export default {
       ],
       i18nKey: "cursus.subject",
       gqlQuery: subjects,
-      gqlCreateMutation: createSubject,
+      gqlCreateMutation: createSubjects,
       gqlPatchMutation: updateSubjects,
-      gqlDeleteMutation: deleteSubject,
-      gqlDeleteMultipleMutation: deleteSubjects,
+      gqlDeleteMutation: deleteSubjects,
       defaultItem: {
         name: "",
         shortName: "",
diff --git a/aleksis/apps/cursus/frontend/components/course.graphql b/aleksis/apps/cursus/frontend/components/course.graphql
index a2e8289..2a145e8 100644
--- a/aleksis/apps/cursus/frontend/components/course.graphql
+++ b/aleksis/apps/cursus/frontend/components/course.graphql
@@ -22,32 +22,8 @@ query courses($orderBy: [String], $filters: JSONString) {
   }
 }
 
-mutation createCourse($input: CreateCourseInput!) {
-  createCourse(input: $input) {
-    item: course {
-      id
-      name
-      subject {
-        id
-        name
-      }
-      teachers {
-        id
-        fullName
-      }
-      groups {
-        id
-        name
-      }
-      lessonQuota
-      canEdit
-      canDelete
-    }
-  }
-}
-
-mutation batchCreateCourse($input: [BatchCreateCourseInput]!) {
-  batchCreateCourse(input: $input) {
+mutation createCourses($input: [BatchCreateCourseInput]!) {
+  createCourses(input: $input) {
     items: courses {
       id
       name
@@ -70,12 +46,6 @@ mutation batchCreateCourse($input: [BatchCreateCourseInput]!) {
   }
 }
 
-mutation deleteCourse($id: ID!) {
-  deleteCourse(id: $id) {
-    ok
-  }
-}
-
 mutation deleteCourses($ids: [ID]!) {
   deleteCourses(ids: $ids) {
     deletionCount
@@ -83,7 +53,7 @@ mutation deleteCourses($ids: [ID]!) {
 }
 
 mutation updateCourses($input: [BatchPatchCourseInput]!) {
-  batchMutation: updateCourses(input: $input) {
+  updateCourses(input: $input) {
     items: courses {
       id
       name
diff --git a/aleksis/apps/cursus/frontend/components/schoolStructure.graphql b/aleksis/apps/cursus/frontend/components/schoolStructure.graphql
index caf453a..269bee1 100644
--- a/aleksis/apps/cursus/frontend/components/schoolStructure.graphql
+++ b/aleksis/apps/cursus/frontend/components/schoolStructure.graphql
@@ -15,9 +15,9 @@ query gqlSchoolGrades($schoolTerm: ID!) {
   }
 }
 
-mutation gqlCreateGrade($input: CreateGroupInput!) {
-  createGrade(input: $input) {
-    grade: group {
+mutation gqlCreateGrades($input: [BatchCreateGroupInput]!) {
+  createGrades(input: $input) {
+    grades: groups {
       id
       name
       shortName
@@ -28,9 +28,9 @@ mutation gqlCreateGrade($input: CreateGroupInput!) {
   }
 }
 
-mutation gqlCreateClass($input: CreateGroupInput!) {
-  createClass(input: $input) {
-    class: group {
+mutation gqlCreateClasses($input: [BatchCreateGroupInput]!) {
+  createClasses(input: $input) {
+    classes: groups {
       id
       name
       shortName
diff --git a/aleksis/apps/cursus/frontend/components/subject.graphql b/aleksis/apps/cursus/frontend/components/subject.graphql
index b635505..2ce0fb8 100644
--- a/aleksis/apps/cursus/frontend/components/subject.graphql
+++ b/aleksis/apps/cursus/frontend/components/subject.graphql
@@ -20,9 +20,9 @@ query subjects($orderBy: [String], $filters: JSONString) {
   }
 }
 
-mutation createSubject($input: CreateSubjectInput!) {
-  createSubject(input: $input) {
-    item: subject {
+mutation createSubjects($input: [BatchCreateSubjectInput]!) {
+  createSubjects(input: $input) {
+    items: subjects {
       id
       name
       shortName
@@ -42,12 +42,6 @@ mutation createSubject($input: CreateSubjectInput!) {
   }
 }
 
-mutation deleteSubject($id: ID!) {
-  deleteSubject(id: $id) {
-    ok
-  }
-}
-
 mutation deleteSubjects($ids: [ID]!) {
   deleteSubjects(ids: $ids) {
     deletionCount
@@ -55,7 +49,7 @@ mutation deleteSubjects($ids: [ID]!) {
 }
 
 mutation updateSubjects($input: [BatchPatchSubjectInput]!) {
-  batchMutation: updateSubjects(input: $input) {
+  updateSubjects(input: $input) {
     items: subjects {
       id
       name
diff --git a/aleksis/apps/cursus/schema.py b/aleksis/apps/cursus/schema.py
index 986be05..d0dd75e 100644
--- a/aleksis/apps/cursus/schema.py
+++ b/aleksis/apps/cursus/schema.py
@@ -8,7 +8,6 @@ from graphene_django_cud.mutations import (
     DjangoBatchCreateMutation,
     DjangoBatchDeleteMutation,
     DjangoBatchPatchMutation,
-    DjangoCreateMutation,
 )
 from guardian.shortcuts import get_objects_for_user
 
@@ -63,7 +62,7 @@ class SubjectType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
         return get_objects_for_user(info.context.user, "cursus.view_course", root.courses.all())
 
 
-class SubjectCreateMutation(DjangoCreateMutation):
+class SubjectBatchCreateMutation(DjangoBatchCreateMutation):
     class Meta:
         model = Subject
         permissions = ("cursus.create_subject_rule",)
@@ -78,11 +77,6 @@ class SubjectCreateMutation(DjangoCreateMutation):
         )
 
 
-class SubjectDeleteMutation(DeleteMutation):
-    klass = Subject
-    permission_required = "cursus.delete_subject_rule"
-
-
 class SubjectBatchDeleteMutation(PermissionBatchDeleteMixin, DjangoBatchDeleteMutation):
     class Meta:
         model = Subject
@@ -160,13 +154,6 @@ class CourseType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
         # return get_objects_for_user(info.context.user, "cursus.view_course", Course)
 
 
-class CourseCreateMutation(DjangoCreateMutation):
-    class Meta:
-        model = Course
-        permissions = ("cursus.create_course_rule",)
-        only_fields = ("name", "subject", "teachers", "groups", "lesson_quota")
-
-
 class CourseBatchCreateMutation(DjangoBatchCreateMutation):
     class Meta:
         model = Course
@@ -174,11 +161,6 @@ class CourseBatchCreateMutation(DjangoBatchCreateMutation):
         only_fields = ("name", "subject", "teachers", "groups", "lesson_quota")
 
 
-class CourseDeleteMutation(DeleteMutation):
-    klass = Course
-    permission_required = "cursus.delete_course_rule"
-
-
 class CourseBatchDeleteMutation(PermissionBatchDeleteMixin, DjangoBatchDeleteMutation):
     class Meta:
         model = Course
@@ -192,7 +174,7 @@ class CourseBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutati
         only_fields = ("id", "name", "subject", "teachers", "groups", "lesson_quota")
 
 
-class CreateSchoolClassMutation(DjangoCreateMutation):
+class CreateSchoolClassMutation(DjangoBatchCreateMutation):
     class Meta:
         model = Group
         permissions = ("core.add_group",)
@@ -204,11 +186,12 @@ class CreateSchoolClassMutation(DjangoCreateMutation):
         group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
             name="School class", managed_by_app_label=app_label
         )
-        input["group_type"] = group_type.pk
+        for schoolClass in input:
+            schoolClass["group_type"] = group_type.pk
         return input
 
 
-class CreateSchoolGradeMutation(DjangoCreateMutation):
+class CreateSchoolGradeMutation(DjangoBatchCreateMutation):
     class Meta:
         model = Group
         permissions = ("core.add_group",)
@@ -220,7 +203,8 @@ class CreateSchoolGradeMutation(DjangoCreateMutation):
         group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
             name=SCHOOL_GRADE_GROUP_TYPE_NAME, managed_by_app_label=app_label
         )
-        input["group_type"] = group_type.pk
+        for schoolGrade in input:
+            schoolGrade["group_type"] = group_type.pk
         return input
 
 
@@ -292,16 +276,13 @@ class Query(graphene.ObjectType):
 
 
 class Mutation(graphene.ObjectType):
-    create_subject = SubjectCreateMutation.Field()
-    delete_subject = SubjectDeleteMutation.Field()
+    create_subjects = SubjectBatchCreateMutation.Field()
     delete_subjects = SubjectBatchDeleteMutation.Field()
     update_subjects = SubjectBatchPatchMutation.Field()
 
-    create_course = CourseCreateMutation.Field()
-    batch_create_course = CourseBatchCreateMutation.Field()
-    delete_course = CourseDeleteMutation.Field()
+    create_courses = CourseBatchCreateMutation.Field()
     delete_courses = CourseBatchDeleteMutation.Field()
     update_courses = CourseBatchPatchMutation.Field()
 
-    create_grade = CreateSchoolGradeMutation.Field()
-    create_class = CreateSchoolClassMutation.Field()
+    create_grades = CreateSchoolGradeMutation.Field()
+    create_classes = CreateSchoolClassMutation.Field()
-- 
GitLab


From df076f2c15f6921d190a220a284cabdfabd9badf Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Thu, 15 Feb 2024 21:52:37 +0100
Subject: [PATCH 3/8] Fix partially updating courses

---
 aleksis/apps/cursus/frontend/components/Course.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/cursus/frontend/components/Course.vue b/aleksis/apps/cursus/frontend/components/Course.vue
index e086933..0d95610 100644
--- a/aleksis/apps/cursus/frontend/components/Course.vue
+++ b/aleksis/apps/cursus/frontend/components/Course.vue
@@ -193,9 +193,9 @@ export default {
         if (header.value === "subject") {
           dto["subject"] = item.subject?.id;
         } else if (header.value === "groups") {
-          dto["groups"] = item.groups.map((group) => group.id);
+          dto["groups"] = item.groups?.map((group) => group.id);
         } else if (header.value === "teachers") {
-          dto["teachers"] = item.teachers.map((teacher) => teacher.id);
+          dto["teachers"] = item.teachers?.map((teacher) => teacher.id);
         } else {
           dto[header.value] = item[header.value];
         }
-- 
GitLab


From 55a268a7f6b59fa02491c1fa1cd4b55f307cf73c Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Fri, 16 Feb 2024 21:35:57 +0100
Subject: [PATCH 4/8] Fix updating subjects

---
 aleksis/apps/cursus/frontend/components/Subject.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/aleksis/apps/cursus/frontend/components/Subject.vue b/aleksis/apps/cursus/frontend/components/Subject.vue
index 4f491d3..63e3d36 100644
--- a/aleksis/apps/cursus/frontend/components/Subject.vue
+++ b/aleksis/apps/cursus/frontend/components/Subject.vue
@@ -212,7 +212,7 @@ export default {
         if (header.value === "parent") {
           dto["parent"] = item.parent?.id;
         } else if (header.value === "teachers") {
-          dto["teachers"] = item.teachers.map((teacher) => teacher.id);
+          dto["teachers"] = item.teachers?.map((teacher) => teacher.id);
         } else {
           dto[header.value] = item[header.value];
         }
-- 
GitLab


From 9156f44fa96955c2224781d5b0c0744fc04297b5 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Fri, 16 Feb 2024 21:24:13 +0000
Subject: [PATCH 5/8] Use python convention

---
 aleksis/apps/cursus/schema.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/cursus/schema.py b/aleksis/apps/cursus/schema.py
index d0dd75e..a1e05e8 100644
--- a/aleksis/apps/cursus/schema.py
+++ b/aleksis/apps/cursus/schema.py
@@ -203,8 +203,8 @@ class CreateSchoolGradeMutation(DjangoBatchCreateMutation):
         group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
             name=SCHOOL_GRADE_GROUP_TYPE_NAME, managed_by_app_label=app_label
         )
-        for schoolGrade in input:
-            schoolGrade["group_type"] = group_type.pk
+        for school_grade in input:
+            school_grade["group_type"] = group_type.pk
         return input
 
 
-- 
GitLab


From 18e94035be0519a1ea62213893b6e2b1db20ab30 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sat, 24 Feb 2024 09:43:30 +0000
Subject: [PATCH 6/8] Fix variable name

---
 aleksis/apps/cursus/schema.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/cursus/schema.py b/aleksis/apps/cursus/schema.py
index 33ed506..a733f53 100644
--- a/aleksis/apps/cursus/schema.py
+++ b/aleksis/apps/cursus/schema.py
@@ -190,8 +190,8 @@ class CreateSchoolClassMutation(DjangoBatchCreateMutation):
         group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
             name="School class", managed_by_app_label=app_label
         )
-        for schoolClass in input:
-            schoolClass["group_type"] = group_type.pk
+        for school_class in input:
+            school_class["group_type"] = group_type.pk
         return input
 
 
-- 
GitLab


From bfe4096e7f9d241b1cacd9ad13ca8e67dfb1e6d6 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sat, 24 Feb 2024 11:03:59 +0100
Subject: [PATCH 7/8] Fix lint and reformat

---
 aleksis/apps/cursus/frontend/components/Course.vue       | 2 +-
 aleksis/apps/cursus/frontend/components/CreateCourse.vue | 2 +-
 aleksis/apps/cursus/frontend/components/Subject.vue      | 2 +-
 aleksis/apps/cursus/schema.py                            | 1 -
 4 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/aleksis/apps/cursus/frontend/components/Course.vue b/aleksis/apps/cursus/frontend/components/Course.vue
index 0d95610..e79a29d 100644
--- a/aleksis/apps/cursus/frontend/components/Course.vue
+++ b/aleksis/apps/cursus/frontend/components/Course.vue
@@ -188,7 +188,7 @@ export default {
   },
   methods: {
     transformPatchData(item) {
-      let dto = {"id": item.id};
+      let dto = { id: item.id };
       this.headers.map((header) => {
         if (header.value === "subject") {
           dto["subject"] = item.subject?.id;
diff --git a/aleksis/apps/cursus/frontend/components/CreateCourse.vue b/aleksis/apps/cursus/frontend/components/CreateCourse.vue
index 81b2b6a..d66cf9f 100644
--- a/aleksis/apps/cursus/frontend/components/CreateCourse.vue
+++ b/aleksis/apps/cursus/frontend/components/CreateCourse.vue
@@ -119,7 +119,7 @@ export default {
     return {
       subject: {
         gqlQuery: subjects,
-        gqlCreateMutation: createSubject,
+        gqlCreateMutation: createSubjects,
         transformCreateData(item) {
           return { ...item, parent: item.parent?.id };
         },
diff --git a/aleksis/apps/cursus/frontend/components/Subject.vue b/aleksis/apps/cursus/frontend/components/Subject.vue
index 63e3d36..4b5e20d 100644
--- a/aleksis/apps/cursus/frontend/components/Subject.vue
+++ b/aleksis/apps/cursus/frontend/components/Subject.vue
@@ -207,7 +207,7 @@ export default {
   },
   methods: {
     transformPatchData(item) {
-      let dto = {"id": item.id};
+      let dto = { id: item.id };
       this.headers.map((header) => {
         if (header.value === "parent") {
           dto["parent"] = item.parent?.id;
diff --git a/aleksis/apps/cursus/schema.py b/aleksis/apps/cursus/schema.py
index a733f53..0e2a3d3 100644
--- a/aleksis/apps/cursus/schema.py
+++ b/aleksis/apps/cursus/schema.py
@@ -13,7 +13,6 @@ from guardian.shortcuts import get_objects_for_user
 
 from aleksis.core.models import Group, GroupType, Person
 from aleksis.core.schema.base import (
-    DeleteMutation,
     DjangoFilterMixin,
     FilterOrderList,
     PermissionBatchDeleteMixin,
-- 
GitLab


From f3b1ebdd56576e1a2c7befa3fef899052aca05b9 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sat, 24 Feb 2024 11:53:31 +0100
Subject: [PATCH 8/8] Bump Core version

---
 pyproject.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pyproject.toml b/pyproject.toml
index 0a22988..a4445ae 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -35,7 +35,7 @@ priority = "supplemental"
 
 [tool.poetry.dependencies]
 python = "^3.10"
-aleksis-core = "^4.0.0.dev3"
+aleksis-core = "^4.0.0.dev4"
 
 [tool.poetry.plugins."aleksis.app"]
 cursus = "aleksis.apps.cursus.apps:DefaultConfig"
-- 
GitLab