From 3c386f31ca25603bfd023f672e600aa8ee582c12 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Fri, 7 Oct 2022 17:22:28 +0200 Subject: [PATCH] Add linking to `evaluate_url` for learning unit --- .../competences/PerformanceCriteriaRow.vue | 2 +- client/src/stores/circle.ts | 2 +- client/src/types.ts | 1 + server/vbv_lernwelt/competence/serializers.py | 15 ++++-------- server/vbv_lernwelt/learnpath/models.py | 4 ++++ server/vbv_lernwelt/learnpath/serializers.py | 23 +++++++++++++++++++ 6 files changed, 34 insertions(+), 13 deletions(-) diff --git a/client/src/components/competences/PerformanceCriteriaRow.vue b/client/src/components/competences/PerformanceCriteriaRow.vue index 464b171b..0675d5ef 100644 --- a/client/src/components/competences/PerformanceCriteriaRow.vue +++ b/client/src/components/competences/PerformanceCriteriaRow.vue @@ -37,7 +37,7 @@ const props = withDefaults(defineProps(), { - + Sich nochmals einschätzen diff --git a/client/src/stores/circle.ts b/client/src/stores/circle.ts index 9673c25f..3a98342e 100644 --- a/client/src/stores/circle.ts +++ b/client/src/stores/circle.ts @@ -114,7 +114,7 @@ export const useCircleStore = defineStore({ }, openSelfEvaluation(learningUnit: LearningUnit) { this.router.push({ - path: learningUnit.frontend_url, + path: learningUnit.evaluate_url, }); }, closeSelfEvaluation(learningUnit: LearningUnit) { diff --git a/client/src/types.ts b/client/src/types.ts index 38281960..c55be659 100644 --- a/client/src/types.ts +++ b/client/src/types.ts @@ -155,6 +155,7 @@ export interface LearningUnitPerformanceCriteria extends CourseWagtailPage { export interface LearningUnit extends CourseWagtailPage { type: "learnpath.LearningUnit"; learningContents: LearningContent[]; + evaluate_url: string; minutes: number; parentLearningSequence?: LearningSequence; parentCircle?: Circle; diff --git a/server/vbv_lernwelt/competence/serializers.py b/server/vbv_lernwelt/competence/serializers.py index 5b42311d..3b4d96ef 100644 --- a/server/vbv_lernwelt/competence/serializers.py +++ b/server/vbv_lernwelt/competence/serializers.py @@ -2,7 +2,6 @@ from rest_framework import serializers from vbv_lernwelt.competence.models import PerformanceCriteria from vbv_lernwelt.course.serializers import CourseCategorySerializer -from vbv_lernwelt.learnpath.models import LearningUnit from vbv_lernwelt.learnpath.serializer_helpers import get_it_serializer_class @@ -27,17 +26,11 @@ class PerformanceCriteriaSerializer( course_category = serializers.SerializerMethodField() def get_learning_unit(self, obj): - learning_unit_serializer = get_it_serializer_class( - LearningUnit, - [ - "id", - "title", - "slug", - "type", - "translation_key", - ], + from vbv_lernwelt.learnpath.serializers import ( + LearningUnitPerformanceCriteriaSerializer, ) - return learning_unit_serializer(obj.learning_unit).data + + return LearningUnitPerformanceCriteriaSerializer(obj.learning_unit).data def get_circle(self, obj): return obj.learning_unit.get_parent().specific.title diff --git a/server/vbv_lernwelt/learnpath/models.py b/server/vbv_lernwelt/learnpath/models.py index 31a1d794..4564451b 100644 --- a/server/vbv_lernwelt/learnpath/models.py +++ b/server/vbv_lernwelt/learnpath/models.py @@ -250,6 +250,10 @@ class LearningUnit(Page): super(LearningUnit, self).full_clean(*args, **kwargs) def get_frontend_url(self): + short_slug = self.slug.replace(f"{self.get_parent().slug}-lu-", "") + return f"{self.get_parent().specific.get_frontend_url()}#lu-{short_slug}" + + def get_evaluate_url(self): short_slug = self.slug.replace(f"{self.get_parent().slug}-lu-", "") return f"{self.get_parent().specific.get_frontend_url()}/evaluate/{short_slug}" diff --git a/server/vbv_lernwelt/learnpath/serializers.py b/server/vbv_lernwelt/learnpath/serializers.py index 57f1195e..8884663e 100644 --- a/server/vbv_lernwelt/learnpath/serializers.py +++ b/server/vbv_lernwelt/learnpath/serializers.py @@ -1,3 +1,5 @@ +from rest_framework.fields import SerializerMethodField + from vbv_lernwelt.competence.serializers import ( PerformanceCriteriaLearningPathSerializer, ) @@ -9,13 +11,34 @@ class LearningUnitSerializer( get_it_serializer_class( LearningUnit, [ + "evaluate_url", "course_category", "children", ], ) ): + evaluate_url = SerializerMethodField() + def get_children(self, obj): return [ PerformanceCriteriaLearningPathSerializer(child).data for child in obj.performancecriteria_set.all() ] + + def get_evaluate_url(self, obj): + return obj.get_evaluate_url() + + +class LearningUnitPerformanceCriteriaSerializer( + get_it_serializer_class( + LearningUnit, + [ + "evaluate_url", + "course_category", + ], + ) +): + evaluate_url = SerializerMethodField() + + def get_evaluate_url(self, obj): + return obj.get_evaluate_url()