From e5a791e031b74db53c68fadbb8baea0cbb0fcd5f Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Wed, 20 Jun 2012 15:53:59 -0400 Subject: [PATCH] Add scaffolding comments for progress tracking in video modules. --- common/lib/xmodule/video_module.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/video_module.py b/common/lib/xmodule/video_module.py index d7c7f80291..f3d615fd3d 100644 --- a/common/lib/xmodule/video_module.py +++ b/common/lib/xmodule/video_module.py @@ -4,6 +4,7 @@ import logging from lxml import etree from x_module import XModule, XModuleDescriptor +from progress import Progress log = logging.getLogger("mitx.courseware.modules") @@ -15,17 +16,32 @@ class Module(XModule): video_time = 0 def handle_ajax(self, dispatch, get): + ''' + Handle ajax calls to this video. + TODO (vshnayder): This is not being called right now, so the position + is not being saved. + ''' log.debug(u"GET {0}".format(get)) log.debug(u"DISPATCH {0}".format(dispatch)) if dispatch == 'goto_position': self.position = int(float(get['position'])) - log.debug(u"NEW POSITION {0}".format(self.position)) + log.info(u"NEW POSITION {0}".format(self.position)) return json.dumps({'success':True}) raise Http404() + def get_progress(self): + ''' TODO (vshnayder): Get and save duration of youtube video, then return + fraction watched. + (Be careful to notice when video link changes and update) + + For now, we have no way of knowing if the video has even been watched, so + just return None. + ''' + return None + def get_state(self): log.debug(u"STATE POSITION {0}".format(self.position)) - return json.dumps({ 'position':self.position }) + return json.dumps({ 'position': self.position }) @classmethod def get_xml_tags(c): @@ -41,15 +57,16 @@ class Module(XModule): 'id': self.item_id, 'position': self.position, 'name': self.name, - 'annotations': self.annotations + 'annotations': self.annotations, }) def __init__(self, system, xml, item_id, state=None): XModule.__init__(self, system, xml, item_id, state) - xmltree=etree.fromstring(xml) + xmltree = etree.fromstring(xml) self.youtube = xmltree.get('youtube') self.name = xmltree.get('name') self.position = 0 + if state is not None: state = json.loads(state) if 'position' in state: