Commit d9d4a007 by Nimisha Asthagiri

PLAT-520 Fix Asset store import of null values

parent 4db1753e
...@@ -289,12 +289,12 @@ class VideosHandlerTestCase(VideoUploadTestMixin, CourseTestCase): ...@@ -289,12 +289,12 @@ class VideosHandlerTestCase(VideoUploadTestMixin, CourseTestCase):
headers={"Content-Type": file_info["content_type"]} headers={"Content-Type": file_info["content_type"]}
) )
# Ensure asset store was updated # Ensure asset store was updated and the created_by field was set
self.assertIsNotNone( asset_metadata = modulestore().find_asset_metadata(
modulestore().find_asset_metadata( self.course.id.make_asset_key(VIDEO_ASSET_TYPE, video_id)
self.course.id.make_asset_key(VIDEO_ASSET_TYPE, video_id)
)
) )
self.assertIsNotNone(asset_metadata)
self.assertEquals(asset_metadata.created_by, self.user.id)
# Ensure VAL was updated # Ensure VAL was updated
val_info = get_video_info(video_id) val_info = get_video_info(video_id)
......
...@@ -334,8 +334,9 @@ def videos_post(course, request): ...@@ -334,8 +334,9 @@ def videos_post(course, request):
) )
# persist edx_video_id as uploaded through this course # persist edx_video_id as uploaded through this course
video_meta_data = AssetMetadata(course.id.make_asset_key(VIDEO_ASSET_TYPE, edx_video_id)) user_id = request.user.id
modulestore().save_asset_metadata(video_meta_data, request.user.id) video_meta_data = AssetMetadata(course.id.make_asset_key(VIDEO_ASSET_TYPE, edx_video_id), created_by=user_id)
modulestore().save_asset_metadata(video_meta_data, user_id)
# persist edx_video_id in VAL # persist edx_video_id in VAL
create_video({ create_video({
......
...@@ -195,6 +195,9 @@ class AssetMetadata(object): ...@@ -195,6 +195,9 @@ class AssetMetadata(object):
elif tag == 'locked': elif tag == 'locked':
# Boolean. # Boolean.
value = True if value == "true" else False value = True if value == "true" else False
elif value == 'None':
# None.
value = None
elif tag in ('created_on', 'edited_on'): elif tag in ('created_on', 'edited_on'):
# ISO datetime. # ISO datetime.
value = dateutil.parser.parse(value) value = dateutil.parser.parse(value)
...@@ -204,9 +207,6 @@ class AssetMetadata(object): ...@@ -204,9 +207,6 @@ class AssetMetadata(object):
elif tag == 'fields': elif tag == 'fields':
# Dictionary. # Dictionary.
value = json.loads(value) value = json.loads(value)
elif value == 'None':
# None.
value = None
setattr(self, tag, value) setattr(self, tag, value)
@contract(node='AssetElement') @contract(node='AssetElement')
......
...@@ -57,6 +57,18 @@ class TestAssetXml(unittest.TestCase): ...@@ -57,6 +57,18 @@ class TestAssetXml(unittest.TestCase):
new_value = getattr(new_asset_md, attr) new_value = getattr(new_asset_md, attr)
self.assertEqual(orig_value, new_value) self.assertEqual(orig_value, new_value)
def test_export_with_None_value(self):
"""
Export and import a single AssetMetadata to XML with a None created_by field, without causing an exception.
"""
asset_md = AssetMetadata(
self.course_id.make_asset_key('asset', 'none_value'),
created_by=None,
)
asset = etree.Element("asset")
asset_md.to_xml(asset)
asset_md.from_xml(asset)
def test_export_all_assets_to_xml(self): def test_export_all_assets_to_xml(self):
""" """
Export all AssetMetadatas to XML and verify the structure and fields. Export all AssetMetadatas to XML and verify the structure and fields.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment