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