Commit e5a791e0 by Victor Shnayder

Add scaffolding comments for progress tracking in video modules.

parent 21508534
...@@ -4,6 +4,7 @@ import logging ...@@ -4,6 +4,7 @@ import logging
from lxml import etree from lxml import etree
from x_module import XModule, XModuleDescriptor from x_module import XModule, XModuleDescriptor
from progress import Progress
log = logging.getLogger("mitx.courseware.modules") log = logging.getLogger("mitx.courseware.modules")
...@@ -15,17 +16,32 @@ class Module(XModule): ...@@ -15,17 +16,32 @@ class Module(XModule):
video_time = 0 video_time = 0
def handle_ajax(self, dispatch, get): 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"GET {0}".format(get))
log.debug(u"DISPATCH {0}".format(dispatch)) log.debug(u"DISPATCH {0}".format(dispatch))
if dispatch == 'goto_position': if dispatch == 'goto_position':
self.position = int(float(get['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}) return json.dumps({'success':True})
raise Http404() 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): def get_state(self):
log.debug(u"STATE POSITION {0}".format(self.position)) log.debug(u"STATE POSITION {0}".format(self.position))
return json.dumps({ 'position':self.position }) return json.dumps({ 'position': self.position })
@classmethod @classmethod
def get_xml_tags(c): def get_xml_tags(c):
...@@ -41,15 +57,16 @@ class Module(XModule): ...@@ -41,15 +57,16 @@ class Module(XModule):
'id': self.item_id, 'id': self.item_id,
'position': self.position, 'position': self.position,
'name': self.name, 'name': self.name,
'annotations': self.annotations 'annotations': self.annotations,
}) })
def __init__(self, system, xml, item_id, state=None): def __init__(self, system, xml, item_id, state=None):
XModule.__init__(self, system, xml, item_id, state) XModule.__init__(self, system, xml, item_id, state)
xmltree=etree.fromstring(xml) xmltree = etree.fromstring(xml)
self.youtube = xmltree.get('youtube') self.youtube = xmltree.get('youtube')
self.name = xmltree.get('name') self.name = xmltree.get('name')
self.position = 0 self.position = 0
if state is not None: if state is not None:
state = json.loads(state) state = json.loads(state)
if 'position' in state: if 'position' in state:
......
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