66 lines
2.0 KiB
Python
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"]
|