vbv/server/vbv_lernwelt/learning_mentor/serializers.py

66 lines
2.0 KiB
Python

from rest_framework import serializers
from vbv_lernwelt.core.serializers import UserShortSerializer
from vbv_lernwelt.learning_mentor.models import (
AgentParticipantRelation,
MentorInvitation,
)
class MentorAssignmentCompletionSerializer(serializers.Serializer):
status = serializers.SerializerMethodField()
user_id = serializers.CharField()
last_name = serializers.CharField()
url = serializers.CharField()
@staticmethod
def get_status(obj):
return obj.status.value
class MentorAssignmentStatusSerializer(serializers.Serializer):
id = serializers.CharField()
title = serializers.CharField()
circle_id = serializers.CharField()
circle_name = serializers.CharField()
pending_evaluations = serializers.IntegerField()
completions = MentorAssignmentCompletionSerializer(many=True)
type = serializers.ReadOnlyField()
class InvitationSerializer(serializers.ModelSerializer):
class Meta:
model = MentorInvitation
fields = ["id", "email"]
read_only_fields = ["id"]
def create(self, validated_data):
participant = self.context["course_session_user"]
invitation, _ = MentorInvitation.objects.get_or_create(
email=validated_data["email"], participant=participant
)
return invitation
class AgentParticipantRelationSerializer(serializers.ModelSerializer):
agent = UserShortSerializer(read_only=True)
participant_user = serializers.SerializerMethodField()
course_session_id = serializers.SerializerMethodField()
def get_participant_user(self, obj):
return UserShortSerializer(obj.participant.user).data
def get_course_session_id(self, obj):
return obj.participant.course_session_id
class Meta:
model = AgentParticipantRelation
fields = [
"id",
"role",
"course_session_id",
"agent",
"participant_user",
]
read_only_fields = ["id"]