from typing import List from rest_framework import serializers from vbv_lernwelt.competence.models import PerformanceCriteria from vbv_lernwelt.core.serializers import UserSerializer from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback class SelfEvaluationFeedbackSerializer(serializers.ModelSerializer): criteria = serializers.SerializerMethodField() feedback_requester_user = UserSerializer(read_only=True) feedback_provider_user = UserSerializer(read_only=True) learning_unit_id = serializers.PrimaryKeyRelatedField( read_only=True, source="learning_unit" ) class Meta: model = SelfEvaluationFeedback fields = [ "id", "learning_unit_id", "feedback_submitted", "feedback_requester_user", "feedback_provider_user", "criteria", ] def get_criteria(self, obj): performance_criteria: List[ PerformanceCriteria ] = obj.learning_unit.performancecriteria_set.all() return [ { "id": criteria.id, "title": criteria.title, } for criteria in performance_criteria ]