From 985211a3de10a8fd16ec38c73a9017c7c1f15579 Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Sat, 4 Feb 2012 12:45:31 -0500 Subject: [PATCH] Showing due dates and section types on profile page. --- courseware/content_parser.py | 5 ++--- courseware/modules/capa_module.py | 5 +++++ courseware/views.py | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/courseware/content_parser.py b/courseware/content_parser.py index db14618067..8f6482ccf0 100644 --- a/courseware/content_parser.py +++ b/courseware/content_parser.py @@ -185,9 +185,8 @@ def toc_from_xml(dom, active_chapter, active_section): sections=list() for s in dom.xpath('//course[@name=$name]/chapter[@name=$chname]/section', name=name, chname=c.get('name')): sections.append({'name':s.get("name") or "", - 'time':s.get("time") or "", - 'format':s.get("format") or "", - 'due':s.get("display_due_date") or "", + 'format':s.get("subtitle") if s.get("subtitle") else s.get("format") or "", + 'due':s.get("due") or "", 'active':(c.get("name")==active_chapter and \ s.get("name")==active_section)}) ch.append({'name':c.get("name"), diff --git a/courseware/modules/capa_module.py b/courseware/modules/capa_module.py index 830a915142..78e9586462 100644 --- a/courseware/modules/capa_module.py +++ b/courseware/modules/capa_module.py @@ -3,6 +3,7 @@ import datetime import dateutil import dateutil.parser import json +import logging import math import numpy import os @@ -23,6 +24,8 @@ from x_module import XModule from courseware.capa.capa_problem import LoncapaProblem import courseware.content_parser as content_parser +log = logging.getLogger("mitx.courseware") + class LoncapaModule(XModule): ''' Interface between capa_problem and x_module. Originally a hack meant to be refactored out, but it seems to be serving a useful @@ -128,6 +131,7 @@ class LoncapaModule(XModule): display_due_date_string=content_parser.item(dom2.xpath('/problem/@due')) if len(display_due_date_string)>0: self.display_due_date=dateutil.parser.parse(display_due_date_string) + log.debug("Parsed " + display_due_date_string + " to " + str(self.display_due_date)) else: self.display_due_date=None @@ -136,6 +140,7 @@ class LoncapaModule(XModule): if len(grace_period_string)>0 and self.display_due_date: self.grace_period = content_parser.parse_timedelta(grace_period_string) self.close_date = self.display_due_date + self.grace_period + log.debug("Then parsed " + grace_period_string + " to closing date" + str(self.close_date)) else: self.grace_period = None self.close_date = self.display_due_date diff --git a/courseware/views.py b/courseware/views.py index 4975736914..18e816b5c7 100644 --- a/courseware/views.py +++ b/courseware/views.py @@ -59,6 +59,8 @@ def profile(request): course=course, chname=chname): problems=dom.xpath('//course[@name=$course]/chapter[@name=$chname]/section[@name=$section]//problem', course=course, chname=chname, section=s.get('name')) + + graded = True if s.get('graded') == "true" else False scores=[] if len(problems)>0: for p in problems: @@ -70,7 +72,7 @@ def profile(request): correct=response.grade total=courseware.modules.capa_module.LoncapaModule(etree.tostring(p), "id").max_score() # TODO: Add state. Not useful now, but maybe someday problems will have randomized max scores? - scores.append((int(correct),total, ( True if s.get('graded') == "true" else False ) )) + scores.append((int(correct),total, graded )) section_total = (sum([score[0] for score in scores]), @@ -81,6 +83,7 @@ def profile(request): #Add the graded total to total_scores format = s.get('format') if s.get('format') else "" + subtitle = s.get('subtitle') if s.get('subtitle') else format if format and graded_total[1] > 0: format_scores = total_scores[ format ] if format in total_scores else [] format_scores.append( graded_total ) @@ -92,6 +95,9 @@ def profile(request): 'scores':scores, 'section_total' : section_total, 'format' : format, + 'subtitle' : subtitle, + 'due' : s.get("due") or "", + 'graded' : graded, } hw.append(score)