55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
""" CCX API v0 Serializers. """
|
|
|
|
|
|
from ccx_keys.locator import CCXLocator
|
|
from rest_framework import serializers
|
|
|
|
from lms.djangoapps.ccx.models import CustomCourseForEdX
|
|
|
|
|
|
class CCXCourseSerializer(serializers.ModelSerializer):
|
|
"""
|
|
Serializer for CCX courses
|
|
"""
|
|
ccx_course_id = serializers.SerializerMethodField()
|
|
master_course_id = serializers.CharField(source='course_id')
|
|
display_name = serializers.CharField()
|
|
coach_email = serializers.EmailField(source='coach.email')
|
|
start = serializers.CharField(allow_blank=True)
|
|
due = serializers.CharField(allow_blank=True)
|
|
max_students_allowed = serializers.IntegerField(source='max_student_enrollments_allowed')
|
|
course_modules = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = CustomCourseForEdX
|
|
fields = (
|
|
"ccx_course_id",
|
|
"master_course_id",
|
|
"display_name",
|
|
"coach_email",
|
|
"start",
|
|
"due",
|
|
"max_students_allowed",
|
|
"course_modules",
|
|
)
|
|
read_only_fields = (
|
|
"ccx_course_id",
|
|
"master_course_id",
|
|
"start",
|
|
"due",
|
|
)
|
|
|
|
@staticmethod
|
|
def get_ccx_course_id(obj):
|
|
"""
|
|
Getter for the CCX Course ID
|
|
"""
|
|
return str(CCXLocator.from_course_locator(obj.course.id, obj.id))
|
|
|
|
@staticmethod
|
|
def get_course_modules(obj):
|
|
"""
|
|
Getter for the Course Modules. The list is stored in a compressed field.
|
|
"""
|
|
return obj.structure or []
|