69 lines
2.3 KiB
Python
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
|