Files
edx-platform/lms/djangoapps/course_home_api/course_metadata/serializers.py
Michael Terry 2176dd7890 feat: allow unsubcribing from a course goal with just a token
* 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
2021-08-23 12:07:32 -04:00

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()