Commit bdf2c286 by zubair-arbi

update video module to always set download_video field on export

parent 3f026c1e
......@@ -202,40 +202,6 @@ class VideoDescriptorImportTestCase(unittest.TestCase):
'transcripts': {'ua': 'ukrainian_translation.srt', 'ge': 'german_translation.srt'}
})
def test_constructor_for_download_video(self):
"""
Test that "download_video" field is False (default value) if not explicitly set in xml
"""
sample_xml = '''
<video display_name="Test Video" youtube="1.0:p2Q6BrNhdh8">
<source src="http://www.example.com/source.mp4"/>
</video>
'''
descriptor = instantiate_descriptor(data=sample_xml)
self.assert_attributes_equal(descriptor, {
'youtube_id_1_0': 'p2Q6BrNhdh8',
'download_video': False,
'html5_sources': ['http://www.example.com/source.mp4'],
'data': ''
})
# Now construct video from xml with explicitly set download_video and check that
# resulting video descriptor has same value for "download_video"
sample_xml = '''
<video display_name="Test Video"
youtube="1.0:p2Q6BrNhdh8"
download_video="true">
<source src="http://www.example.com/source.mp4"/>
</video>
'''
descriptor = instantiate_descriptor(data=sample_xml)
self.assert_attributes_equal(descriptor, {
'youtube_id_1_0': 'p2Q6BrNhdh8',
'download_video': True,
'html5_sources': ['http://www.example.com/source.mp4'],
'data': ''
})
def test_from_xml(self):
module_system = DummySystem(load_error_modules=True)
xml_data = '''
......@@ -296,7 +262,7 @@ class VideoDescriptorImportTestCase(unittest.TestCase):
'track': '',
'handout': None,
'download_track': False,
'download_video': False,
'download_video': True,
'html5_sources': ['http://www.example.com/source.mp4'],
'data': ''
})
......@@ -326,7 +292,7 @@ class VideoDescriptorImportTestCase(unittest.TestCase):
'end_time': datetime.timedelta(seconds=0.0),
'track': 'http://www.example.com/track',
'download_track': True,
'download_video': False,
'download_video': True,
'html5_sources': ['http://www.example.com/source.mp4'],
'data': '',
'transcripts': {},
......@@ -583,7 +549,8 @@ class VideoExportTestCase(VideoDescriptorTestBase):
Test XML export with defaults.
"""
xml = self.descriptor.definition_to_xml(None)
expected = '<video url_name="SampleProblem"/>\n'
# Check that download_video field is also set to default (False) in xml for backward compatibility
expected = '<video url_name="SampleProblem" download_video="false"/>\n'
self.assertEquals(expected, etree.tostring(xml, pretty_print=True))
......
......@@ -230,13 +230,21 @@ class VideoDescriptor(VideoFields, VideoStudioViewHandlers, TabsEditingDescripto
editable_fields = super(VideoDescriptor, self).editable_metadata_fields
self.source_visible = False
# Set download_video field to default value if its not explicitly set for backward compatibility.
download_video = editable_fields['download_video']
if not download_video['explicitly_set']:
self.download_video = self.download_video
if self.source:
# If `source` field value exist in the `html5_sources` field values,
# then delete `source` field value and use value from `html5_sources` field.
if self.source in self.html5_sources:
self.source = '' # Delete source field value.
self.download_video = True
else: # Otherwise, `source` field value will be used.
self.source_visible = True
if not download_video['explicitly_set']:
self.download_video = True
# for backward compatibility.
# If course was existed and was not re-imported by the moment of adding `download_track` field,
......
......@@ -104,7 +104,7 @@ class CommandsTestBase(TestCase):
video_id = test_course_key.make_usage_key('video', 'Welcome').to_deprecated_string()
self.assertEqual(dump[video_id]['category'], 'video')
self.assertEqual(len(dump[video_id]['metadata']), 4)
self.assertEqual(len(dump[video_id]['metadata']), 5)
self.assertIn('youtube_id_1_0', dump[video_id]['metadata'])
# Check if there are the right number of elements
......
......@@ -487,7 +487,7 @@ class TestVideoDescriptorInitialization(BaseTestXmodule):
self.assertIn('source', fields)
self.assertEqual(self.item_descriptor.source, 'http://example.org/video.mp4')
self.assertFalse(self.item_descriptor.download_video)
self.assertTrue(self.item_descriptor.download_video)
self.assertTrue(self.item_descriptor.source_visible)
def test_source_in_html5sources(self):
......@@ -500,7 +500,7 @@ class TestVideoDescriptorInitialization(BaseTestXmodule):
fields = self.item_descriptor.editable_metadata_fields
self.assertNotIn('source', fields)
self.assertFalse(self.item_descriptor.download_video)
self.assertTrue(self.item_descriptor.download_video)
self.assertFalse(self.item_descriptor.source_visible)
def test_download_video_is_explicitly_set(self):
......
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