66from rest_framework import serializers
77
88from cms .serializers import ProgramPageSerializer
9- from courses .models import Program , ProgramCollection , ProgramRequirementNodeType
9+ from courses .models import (
10+ Program ,
11+ ProgramCertificate ,
12+ ProgramCollection ,
13+ ProgramRequirementNodeType ,
14+ )
1015from courses .serializers .base import (
1116 BaseProgramRequirementTreeSerializer ,
1217 get_thumbnail_url ,
1318)
1419from courses .serializers .utils import get_unique_topics_from_courses
1520from courses .serializers .v1 .departments import DepartmentSerializer
21+ from courses .serializers .v2 .courses import CourseRunEnrollmentSerializer
1622from main .serializers import StrictFieldsSerializer
1723
1824logger = logging .getLogger (__name__ )
@@ -542,6 +548,14 @@ class Meta:
542548 ]
543549
544550
551+ class ProgramCertificateSerializer (serializers .ModelSerializer ):
552+ """ProgramCertificate model serializer"""
553+
554+ class Meta :
555+ model = ProgramCertificate
556+ fields = ["uuid" , "link" ]
557+
558+
545559@extend_schema_serializer (component_name = "V2UserProgramEnrollmentDetail" )
546560class UserProgramEnrollmentDetailSerializer (serializers .Serializer ):
547561 """
@@ -552,23 +566,13 @@ class UserProgramEnrollmentDetailSerializer(serializers.Serializer):
552566 """
553567
554568 program = ProgramSerializer ()
555- enrollments = serializers . SerializerMethodField ( )
569+ enrollments = CourseRunEnrollmentSerializer ( many = True )
556570 certificate = serializers .SerializerMethodField (read_only = True )
557571
558- @extend_schema_field (serializers .ListField (child = serializers .DictField ()))
559- def get_enrollments (self , instance ):
560- """Get course run enrollments using v2 serializer."""
561- from courses .serializers .v2 .courses import CourseRunEnrollmentSerializer
562-
563- enrollments = instance .get ("enrollments" , [])
564- return CourseRunEnrollmentSerializer (enrollments , many = True ).data
565-
566- @extend_schema_field (serializers .DictField (allow_null = True ))
572+ @extend_schema_field (ProgramCertificateSerializer (allow_null = True ))
567573 def get_certificate (self , instance ):
568574 """
569575 Resolve a certificate for this enrollment if it exists.
570576 """
571- from courses .serializers .v2 .certificates import ProgramCertificateSerializer
572-
573577 certificate = instance .get ("certificate" )
574578 return ProgramCertificateSerializer (certificate ).data if certificate else None
0 commit comments