from rest_framework import serializers from apps.certificate.models import Certificate from apps.course.serializers import CourseDetailSerializer class CertificateSerializer(serializers.ModelSerializer): course = serializers.SerializerMethodField() class Meta: model = Certificate fields = ['id', 'student', 'course', 'status', 'created_at', 'updated_at',] read_only_fields = ['id', 'student', 'status', 'created_at', 'updated_at',] def get_course(self, obj): return CourseDetailSerializer(obj.course, context=self.context).data class CertificateRequestSerializer(serializers.ModelSerializer): class Meta: model = Certificate fields = ['id', 'course'] read_only_fields = ['id'] def create(self, validated_data): user = self.context['request'].user course = validated_data['course'] if Certificate.objects.filter(student=user, course=course, status__in=['pending', 'approved']).exists(): raise serializers.ValidationError({"course": "Passwords do not match."}) return Certificate.objects.create(student=user, course=course)