Files
edx-platform/common/djangoapps/entitlements/rest_api/v1/serializers.py
Awais Qureshi 2a1cf5f0d0 chore: upgrading djangorestframework. (#32487)
* chore: upgrading djangorestframework.
2023-06-20 16:03:34 +05:00

64 lines
2.0 KiB
Python

"""
Serializers for all Course Entitlement related return objects.
"""
from django.contrib.auth import get_user_model
from rest_framework import serializers
from common.djangoapps.entitlements.models import CourseEntitlement, CourseEntitlementSupportDetail
from openedx.core.lib.api.serializers import CourseKeyField
class CourseEntitlementSerializer(serializers.ModelSerializer):
""" Serialize a learner's course entitlement and related information. """
user = serializers.SlugRelatedField(slug_field='username', queryset=get_user_model().objects.all())
enrollment_course_run = serializers.CharField(
source='enrollment_course_run.course_id',
read_only=True
)
support_details = serializers.SerializerMethodField()
def get_support_details(self, model):
"""
Returns a serialized set of all support interactions with the course entitlement
"""
qset = CourseEntitlementSupportDetail.objects.filter(entitlement=model).order_by('-created')
return CourseEntitlementSupportDetailSerializer(qset, many=True).data
class Meta:
model = CourseEntitlement
fields = (
'user',
'uuid',
'course_uuid',
'enrollment_course_run',
'expired_at',
'created',
'modified',
'mode',
'refund_locked',
'order_number',
'support_details'
)
class CourseEntitlementSupportDetailSerializer(serializers.ModelSerializer):
""" Serialize the details of a support team interaction with a learner's course entitlement. """
support_user = serializers.SlugRelatedField(
read_only=True,
slug_field='username',
default=serializers.CurrentUserDefault()
)
unenrolled_run = CourseKeyField(read_only='unenrolled_run.id')
class Meta:
model = CourseEntitlementSupportDetail
fields = (
'support_user',
'action',
'comments',
'unenrolled_run',
'created'
)