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"]