Refactor CourseDetails
This commit is contained in:
28
cms/djangoapps/models/settings/encoder.py
Normal file
28
cms/djangoapps/models/settings/encoder.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""
|
||||
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)
|
||||
Reference in New Issue
Block a user