29 lines
821 B
Python
29 lines
821 B
Python
"""
|
|
CourseSettingsEncoder
|
|
"""
|
|
import datetime
|
|
import json
|
|
from json.encoder import JSONEncoder
|
|
|
|
from opaque_keys.edx.locations import Location
|
|
from openedx.core.djangoapps.models.course_details import CourseDetails
|
|
from xmodule.fields import Date
|
|
|
|
from .course_grading import CourseGradingModel
|
|
|
|
|
|
class CourseSettingsEncoder(json.JSONEncoder):
|
|
"""
|
|
Serialize CourseDetails, CourseGradingModel, datetime, and old
|
|
Locations
|
|
"""
|
|
def default(self, obj): # pylint: disable=method-hidden
|
|
if isinstance(obj, (CourseDetails, CourseGradingModel)):
|
|
return obj.__dict__
|
|
elif isinstance(obj, Location):
|
|
return obj.dict()
|
|
elif isinstance(obj, datetime.datetime):
|
|
return Date().to_json(obj)
|
|
else:
|
|
return JSONEncoder.default(self, obj)
|