Files
edx-platform/common/djangoapps/course_about/serializers.py

69 lines
2.3 KiB
Python

"""
Serializers for all Course Descriptor and Course About Descriptor related return objects.
"""
from xmodule.contentstore.content import StaticContent
from django.conf import settings
DATE_FORMAT = getattr(settings, 'API_DATE_FORMAT', '%Y-%m-%d')
def serialize_content(course_descriptor, about_descriptor):
"""
Returns a serialized representation of the course_descriptor and about_descriptor
Args:
course_descriptor(CourseDescriptor) : course descriptor object
about_descriptor(dict) : Dictionary of CourseAboutDescriptor objects
return:
serialize data for course information.
"""
data = {
'media': {},
'display_name': getattr(course_descriptor, 'display_name', None),
'course_number': course_descriptor.location.course,
'course_id': None,
'advertised_start': getattr(course_descriptor, 'advertised_start', None),
'is_new': getattr(course_descriptor, 'is_new', None),
'start': _formatted_datetime(course_descriptor, 'start'),
'end': _formatted_datetime(course_descriptor, 'end'),
'announcement': None,
'effort': about_descriptor.get("effort", None)
}
content_id = unicode(course_descriptor.id)
data["course_id"] = unicode(content_id)
if getattr(course_descriptor, 'course_image', False):
data['media']['course_image'] = course_image_url(course_descriptor)
announcement = getattr(course_descriptor, 'announcement', None)
data["announcement"] = announcement.strftime(DATE_FORMAT) if announcement else None
return data
def course_image_url(course):
"""
Return url of course image.
Args:
course(CourseDescriptor) : The course id to retrieve course image url.
Returns:
Absolute url of course image.
"""
loc = StaticContent.compute_location(course.id, course.course_image)
url = StaticContent.serialize_asset_key_with_slash(loc)
return url
def _formatted_datetime(course_descriptor, date_type):
"""
Return formatted date.
Args:
course_descriptor(CourseDescriptor) : The CourseDescriptor Object.
date_type (str) : Either start or end.
Returns:
formatted date or None .
"""
course_date_ = getattr(course_descriptor, date_type, None)
return course_date_.strftime(DATE_FORMAT) if course_date_ else None