From 4e2c4f02d60ad28e6c2691241f59a07b09c073e7 Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Wed, 12 Jun 2013 12:37:06 -0400 Subject: [PATCH] Fix times not being parse from HH:MM:SS format into floats and update video module logic tests. --- common/lib/xmodule/xmodule/video_module.py | 20 +++++++- .../courseware/tests/test_video_xml.py | 47 ++++++++++--------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/common/lib/xmodule/xmodule/video_module.py b/common/lib/xmodule/xmodule/video_module.py index 0eb5a5fa2e..e0cf534513 100644 --- a/common/lib/xmodule/xmodule/video_module.py +++ b/common/lib/xmodule/xmodule/video_module.py @@ -6,6 +6,8 @@ import logging from lxml import etree from pkg_resources import resource_string, resource_listdir +import datetime +import time from django.http import Http404 @@ -137,10 +139,10 @@ class VideoDescriptor(VideoFields, tag = _get_first_external(xml, 'tag') if tag: video.tag = tag - start_time = xml.get('from') + start_time = _parse_time(xml.get('from')) if start_time: video.start_time = start_time - end_time = xml.get('to') + end_time = _parse_time(xml.get('to')) if end_time: video.end_time = end_time return video @@ -177,3 +179,17 @@ def _parse_youtube(data): # properly. ret['%.2f' % float(pieces[0])] = pieces[1] return ret + + +def _parse_time(str_time): + """Converts s in '12:34:45' format to seconds. If s is + None, returns empty string""" + if str_time is None: + return '' + else: + obj_time = time.strptime(str_time, '%H:%M:%S') + return datetime.timedelta( + hours=obj_time.tm_hour, + minutes=obj_time.tm_min, + seconds=obj_time.tm_sec + ).total_seconds() diff --git a/lms/djangoapps/courseware/tests/test_video_xml.py b/lms/djangoapps/courseware/tests/test_video_xml.py index 35437348d9..aa36d5be89 100644 --- a/lms/djangoapps/courseware/tests/test_video_xml.py +++ b/lms/djangoapps/courseware/tests/test_video_xml.py @@ -18,7 +18,7 @@ import unittest from mock import Mock from lxml import etree -from xmodule.video_module import VideoDescriptor, VideoModule +from xmodule.video_module import VideoDescriptor, VideoModule, _parse_time, _parse_youtube from xmodule.modulestore import Location from xmodule.tests import test_system from xmodule.tests.test_logic import LogicTest @@ -67,30 +67,31 @@ class VideoModuleLogicTest(LogicTest): 'data': '