This was the "outline tab" view of the course. Preceded by the
course info view, succeeded by the MFE outline tab.
In addition to the course home view itself, this drops related
features:
- Legacy version of Course Goals (MFE has a newer implementation)
- Course home in-course search (MFE has no search)
The old course info view and course about views survive for now.
This also drops a few now-unused feature toggles:
- course_experience.latest_update
- course_experience.show_upgrade_msg_on_course_home
- course_experience.upgrade_deadline_message
- course_home.course_home_use_legacy_frontend
With this change, just the progress and courseware tabs are still
supported in legacy form, if you opt-in with waffle flags. The
outline and dates tabs are offered only by the MFE.
AA-798
(This is identical to previous commit be5c1a6, just reintroduced
now that the e2e tests have been fixed)
101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
"""
|
|
Serializers for use in the support app.
|
|
"""
|
|
import json
|
|
|
|
from rest_framework import serializers
|
|
|
|
from common.djangoapps.student.models import CourseEnrollment, ManualEnrollmentAudit
|
|
from lms.djangoapps.program_enrollments.models import ProgramCourseEnrollment, ProgramEnrollment
|
|
from openedx.core.djangoapps.catalog.utils import get_programs_by_uuids
|
|
from openedx.features.course_experience import default_course_url
|
|
|
|
DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
|
|
# pylint: disable=abstract-method
|
|
|
|
|
|
class ManualEnrollmentSerializer(serializers.ModelSerializer):
|
|
"""Serializes a manual enrollment audit object."""
|
|
enrolled_by = serializers.SlugRelatedField(slug_field='email', read_only=True, default='')
|
|
|
|
class Meta:
|
|
model = ManualEnrollmentAudit
|
|
fields = ('enrolled_by', 'time_stamp', 'reason')
|
|
|
|
|
|
class CourseEnrollmentSerializer(serializers.Serializer):
|
|
""" Serializers a student_courseenrollment model object """
|
|
course_id = serializers.CharField()
|
|
is_active = serializers.BooleanField()
|
|
mode = serializers.CharField()
|
|
|
|
class Meta:
|
|
model = CourseEnrollment
|
|
|
|
|
|
class ProgramCourseEnrollmentSerializer(serializers.Serializer):
|
|
""" Serializes a Program Course Enrollment model object """
|
|
created = serializers.DateTimeField(format=DATETIME_FORMAT)
|
|
modified = serializers.DateTimeField(format=DATETIME_FORMAT)
|
|
status = serializers.CharField()
|
|
course_key = serializers.CharField()
|
|
course_enrollment = CourseEnrollmentSerializer()
|
|
course_url = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = ProgramCourseEnrollment
|
|
|
|
def get_course_url(self, obj):
|
|
return default_course_url(obj.course_key)
|
|
|
|
|
|
class ProgramEnrollmentSerializer(serializers.Serializer):
|
|
""" Serializes a Program Enrollment Model object """
|
|
created = serializers.DateTimeField(format=DATETIME_FORMAT)
|
|
modified = serializers.DateTimeField(format=DATETIME_FORMAT)
|
|
external_user_key = serializers.CharField()
|
|
status = serializers.CharField()
|
|
program_uuid = serializers.UUIDField()
|
|
program_course_enrollments = ProgramCourseEnrollmentSerializer(many=True)
|
|
program_name = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = ProgramEnrollment
|
|
|
|
def get_program_name(self, obj):
|
|
program_list = get_programs_by_uuids([obj.program_uuid])
|
|
return next(iter(program_list), {}).get('title', '')
|
|
|
|
|
|
def serialize_user_info(user, user_social_auths=None):
|
|
"""
|
|
Helper method to serialize resulting in user_info_object
|
|
based on passed in django models
|
|
"""
|
|
user_info = {
|
|
'username': user.username,
|
|
'email': user.email,
|
|
}
|
|
if user_social_auths:
|
|
for user_social_auth in user_social_auths:
|
|
user_info.setdefault('sso_list', []).append({
|
|
'uid': user_social_auth.uid,
|
|
})
|
|
return user_info
|
|
|
|
|
|
def serialize_sso_records(user_social_auths):
|
|
"""
|
|
Serialize user social auth model object
|
|
"""
|
|
sso_records = []
|
|
for user_social_auth in user_social_auths:
|
|
sso_records.append({
|
|
'provider': user_social_auth.provider,
|
|
'uid': user_social_auth.uid,
|
|
'created': user_social_auth.created,
|
|
'modified': user_social_auth.modified,
|
|
'extraData': json.dumps(user_social_auth.extra_data),
|
|
})
|
|
return sso_records
|