From 6175ca75ed2c670432123c25ec85d95cd03d1df4 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Wed, 6 Sep 2023 16:58:49 +0200 Subject: [PATCH] Add circle title to dropdown text --- .../attendanceCheckPage/AttendanceCheckPage.vue | 6 +++--- client/src/types.ts | 1 + server/vbv_lernwelt/course_session/admin.py | 11 +++++------ server/vbv_lernwelt/course_session/models.py | 9 +++++++++ server/vbv_lernwelt/course_session/serializers.py | 8 ++++++++ 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue index fdd6cbc3..2d22699a 100644 --- a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue +++ b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue @@ -29,9 +29,9 @@ const presenceCoursesDropdownOptions = computed(() => { (attendanceCourse) => ({ id: attendanceCourse.id, - name: `${t("Präsenzkurs")} ${dayjs(attendanceCourse.start).format( - "DD.MM.YYYY" - )}`, + name: `${t("Präsenzkurs")} ${attendanceCourse.circle_title} ${dayjs( + attendanceCourse.start + ).format("DD.MM.YYYY")}`, } as DropdownSelectable) ); }); diff --git a/client/src/types.ts b/client/src/types.ts index fc25e163..c31e4afa 100644 --- a/client/src/types.ts +++ b/client/src/types.ts @@ -425,6 +425,7 @@ export interface CourseSessionAttendanceCourse { location: string; trainer: string; due_date_id: number; + circle_title: string; } export interface CourseSessionAssignment { diff --git a/server/vbv_lernwelt/course_session/admin.py b/server/vbv_lernwelt/course_session/admin.py index 89d51c78..7f69ef77 100644 --- a/server/vbv_lernwelt/course_session/admin.py +++ b/server/vbv_lernwelt/course_session/admin.py @@ -24,6 +24,7 @@ class CourseSessionAttendanceCourseAdmin(admin.ModelAdmin): "start_date", "end_date", "trainer", + "location", ] list_filter = ["course_session__course", "course_session"] @@ -38,12 +39,10 @@ class CourseSessionAttendanceCourseAdmin(admin.ModelAdmin): end_date.admin_order_field = "due_date__end" def circle(self, obj): - try: - return obj.learning_content.get_ancestors().exact_type(Circle).first().title - except Exception: - # noop - pass - return None + circle = obj.get_circle() + if circle: + return circle.title + return "" # Create a method that serves as a form field def circle_display(self, obj=None): diff --git a/server/vbv_lernwelt/course_session/models.py b/server/vbv_lernwelt/course_session/models.py index 09bf51f5..33ac4e6b 100644 --- a/server/vbv_lernwelt/course_session/models.py +++ b/server/vbv_lernwelt/course_session/models.py @@ -3,6 +3,7 @@ from django_jsonform.models.fields import JSONField as JSONSchemaField from vbv_lernwelt.assignment.models import AssignmentType from vbv_lernwelt.duedate.models import DueDate +from vbv_lernwelt.learnpath.models import Circle class CourseSessionAttendanceCourse(models.Model): @@ -73,6 +74,14 @@ class CourseSessionAttendanceCourse(models.Model): super().save(*args, **kwargs) + def get_circle(self): + try: + return self.learning_content.get_ancestors().exact_type(Circle).first() + except Exception: + # noop + pass + return None + def __str__(self): return f"{self.course_session} - {self.learning_content}" diff --git a/server/vbv_lernwelt/course_session/serializers.py b/server/vbv_lernwelt/course_session/serializers.py index 3e176f0c..76c9d9f8 100644 --- a/server/vbv_lernwelt/course_session/serializers.py +++ b/server/vbv_lernwelt/course_session/serializers.py @@ -9,6 +9,7 @@ from vbv_lernwelt.course_session.models import ( class CourseSessionAttendanceCourseSerializer(serializers.ModelSerializer): start = serializers.SerializerMethodField() end = serializers.SerializerMethodField() + circle_title = serializers.SerializerMethodField() class Meta: model = CourseSessionAttendanceCourse @@ -21,6 +22,7 @@ class CourseSessionAttendanceCourseSerializer(serializers.ModelSerializer): "trainer", "start", "end", + "circle_title", ] def get_start(self, obj): @@ -29,6 +31,12 @@ class CourseSessionAttendanceCourseSerializer(serializers.ModelSerializer): def get_end(self, obj): return obj.due_date.end + def get_circle_title(self, obj): + circle = obj.get_circle() + if circle: + return circle.title + return "" + class CourseSessionAssignmentSerializer(serializers.ModelSerializer): submission_deadline_start = serializers.SerializerMethodField()