From fd8b1e50c2f1aec99de311fb0d75fbd793d1a1f2 Mon Sep 17 00:00:00 2001 From: Piotr Mitros <pmitros@mit.edu> Date: Thu, 26 Jan 2012 14:26:44 -0500 Subject: [PATCH] Staging new Askbot, some work on completion framework --- courseware/module_render.py | 9 +-------- courseware/modules/x_module.py | 5 +++++ courseware/progress.py | 31 +++++++++++++++++++++++++------ courseware/views.py | 1 + settings.py | 2 +- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/courseware/module_render.py b/courseware/module_render.py index 4c969447a1b..4bfbccf8b32 100644 --- a/courseware/module_render.py +++ b/courseware/module_render.py @@ -111,13 +111,6 @@ def render_x_module(user, request, xml_module, module_object_preload): user, module_type, module_id) - # s = StudentModule.objects.filter(student=request.user, - # module_id=module_id, - # module_type = module_type) - # if len(s) == 0: - # s=None - # else: - # s=s[0] if s == None: # If nothing in the database... state=None @@ -132,7 +125,7 @@ def render_x_module(user, request, xml_module, module_object_preload): ajax_url=ajax_url, state=state, track_function = make_track_function(request), - render_function = lambda x: render_module(user, request, x, module_object_preload)) + render_function = lambda x: render_module(user, request, x, module_object_preload)) # If instance wasn't already in the database, create it if s == None: diff --git a/courseware/modules/x_module.py b/courseware/modules/x_module.py index efad4417e83..4b45c4c7fc3 100644 --- a/courseware/modules/x_module.py +++ b/courseware/modules/x_module.py @@ -1,3 +1,5 @@ +import courseware.progress + def dummy_track(event_type, event): pass @@ -12,6 +14,9 @@ class XModule(object): ''' Tags in the courseware file guaranteed to correspond to the module ''' return [] + def get_completion(self): + return courseware.progress.completion() + def get_state(self): return "" diff --git a/courseware/progress.py b/courseware/progress.py index 6fe7cf3f2a2..ad2cb725b4c 100644 --- a/courseware/progress.py +++ b/courseware/progress.py @@ -1,6 +1,11 @@ class completion(object): - def __init__(self, d=None): - self.dict = dict() + def __init__(self, **d): + self.dict = dict({'duration_total':0, + 'duration_watched':0, + 'done':True, + 'questions_correct':0, + 'questions_incorrect':0, + 'questions_total':0}) if d: self.dict.update(d) @@ -11,9 +16,23 @@ class completion(object): self.dict[key] = value def __add__(self, other): - result = dict() - dict.update(self.dict) - dict.update(other.dict) + result = dict(self.dict) + for item in ['duration_total', + 'duration_watched', + 'done', + 'questions_correct', + 'questions_incorrect', + 'questions_total']: + result[item] = result[item]+other.dict[item] + return completion(**result) def __contains__(self, key): - pass + return key in dict + + def __repr__(self): + return repr(self.dict) + +if __name__ == '__main__': + dict1=completion(duration_total=5) + dict2=completion(duration_total=7) + print dict1+dict2 diff --git a/courseware/views.py b/courseware/views.py index 864e5d02230..4345084ec00 100644 --- a/courseware/views.py +++ b/courseware/views.py @@ -134,6 +134,7 @@ def index(request, course="6.002 Spring 2012", chapter="Using the System", secti module_object_preload = list(StudentModule.objects.filter(student=user, module_id__in=module_ids)) + module=render_module(user, request, module, module_object_preload) diff --git a/settings.py b/settings.py index 57b3227b1fb..f42725e7f14 120000 --- a/settings.py +++ b/settings.py @@ -1 +1 @@ -settings_old_askbot.py \ No newline at end of file +settings_new_askbot.py \ No newline at end of file -- GitLab