* Generate common/djangoapps import shims for LMS * Generate common/djangoapps import shims for Studio * Stop appending project root to sys.path * Stop appending common/djangoapps to sys.path * Import from common.djangoapps.course_action_state instead of course_action_state * Import from common.djangoapps.course_modes instead of course_modes * Import from common.djangoapps.database_fixups instead of database_fixups * Import from common.djangoapps.edxmako instead of edxmako * Import from common.djangoapps.entitlements instead of entitlements * Import from common.djangoapps.pipline_mako instead of pipeline_mako * Import from common.djangoapps.static_replace instead of static_replace * Import from common.djangoapps.student instead of student * Import from common.djangoapps.terrain instead of terrain * Import from common.djangoapps.third_party_auth instead of third_party_auth * Import from common.djangoapps.track instead of track * Import from common.djangoapps.util instead of util * Import from common.djangoapps.xblock_django instead of xblock_django * Add empty common/djangoapps/__init__.py to fix pytest collection * Fix pylint formatting violations * Exclude import_shims/ directory tree from linting
64 lines
2.0 KiB
Python
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('unenrolled_run.id')
|
|
|
|
class Meta:
|
|
model = CourseEntitlementSupportDetail
|
|
fields = (
|
|
'support_user',
|
|
'action',
|
|
'comments',
|
|
'unenrolled_run',
|
|
'created'
|
|
)
|