serializers.py 1.55 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
""" CCX API v0 Serializers. """

from rest_framework import serializers

from lms.djangoapps.ccx.models import CustomCourseForEdX
from ccx_keys.locator import CCXLocator


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')
20
    course_modules = serializers.SerializerMethodField()
21 22 23 24 25 26 27 28 29 30 31

    class Meta(object):
        model = CustomCourseForEdX
        fields = (
            "ccx_course_id",
            "master_course_id",
            "display_name",
            "coach_email",
            "start",
            "due",
            "max_students_allowed",
32
            "course_modules",
33 34 35 36 37 38 39 40 41 42 43 44 45 46
        )
        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 unicode(CCXLocator.from_course_locator(obj.course.id, obj.id))
47 48 49 50 51 52 53

    @staticmethod
    def get_course_modules(obj):
        """
        Getter for the Course Modules. The list is stored in a compressed field.
        """
        return obj.structure or []