* Add unsubscribe_token uuid field to CourseGoal model * Add endpoint to unsubcribe from just a token (no login needed) * Add admin page for the course_goals djangoapp * Add get_course_overview_or_404 utility method * Clean up URL handling in course_home_api AA-907
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
# pylint: disable=abstract-method
|
|
"""
|
|
Course Home Course Metadata Serializers. Returns Course Metadata used for all
|
|
Course Home pages.
|
|
"""
|
|
|
|
|
|
from django.urls import reverse
|
|
from django.utils.translation import ugettext as _
|
|
from rest_framework import serializers
|
|
|
|
from lms.djangoapps.course_home_api.serializers import VerifiedModeSerializer
|
|
|
|
|
|
class CourseTabSerializer(serializers.Serializer):
|
|
"""
|
|
Serializer for the Course Home Tabs
|
|
"""
|
|
tab_id = serializers.CharField()
|
|
title = serializers.SerializerMethodField()
|
|
url = serializers.SerializerMethodField()
|
|
|
|
def get_title(self, tab):
|
|
title = tab.title or tab.get('name', '')
|
|
return _(title) # pylint: disable=translation-of-non-string
|
|
|
|
def get_url(self, tab):
|
|
request = self.context.get('request')
|
|
return request.build_absolute_uri(tab.link_func(self.context.get('course'), reverse))
|
|
|
|
|
|
class CourseHomeMetadataSerializer(VerifiedModeSerializer):
|
|
"""
|
|
Serializer for the Course Home Course Metadata
|
|
"""
|
|
can_load_courseware = serializers.BooleanField()
|
|
celebrations = serializers.DictField()
|
|
course_access = serializers.DictField()
|
|
course_id = serializers.CharField()
|
|
is_enrolled = serializers.BooleanField()
|
|
is_self_paced = serializers.BooleanField()
|
|
is_staff = serializers.BooleanField()
|
|
number = serializers.CharField()
|
|
org = serializers.CharField()
|
|
original_user_is_staff = serializers.BooleanField()
|
|
start = serializers.DateTimeField() # used for certain access denied errors
|
|
tabs = CourseTabSerializer(many=True)
|
|
title = serializers.CharField()
|
|
username = serializers.CharField()
|