diff --git a/courseware/content_parser.py b/courseware/content_parser.py index bf17b6d7bb..1f6c3c508c 100644 --- a/courseware/content_parser.py +++ b/courseware/content_parser.py @@ -83,17 +83,17 @@ def module_xml(coursefile, module, id_tag, module_id): #return result_set[0].serialize() def toc_from_xml(coursefile, active_chapter, active_section): - dom2 = etree.parse(coursefile) + dom = etree.parse(coursefile) - name = dom2.xpath('//course/@name')[0] + name = dom.xpath('//course/@name')[0] - chapters = dom2.xpath('//course[@name=$name]/chapter', name=name) + chapters = dom.xpath('//course[@name=$name]/chapter', name=name) ch=list() for c in chapters: if c.get('name') == 'hidden': continue sections=list() - for s in dom2.xpath('//course[@name=$name]/chapter[@name=$chname]/section', name=name, chname=c.get('name')): + 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 "", diff --git a/courseware/views.py b/courseware/views.py index 03a7a05965..16f9435cf8 100644 --- a/courseware/views.py +++ b/courseware/views.py @@ -31,6 +31,8 @@ import uuid from module_render import * +from lxml import etree + template_imports={'urllib':urllib} def profile(request): @@ -39,20 +41,23 @@ def profile(request): if not request.user.is_authenticated(): return redirect('/') - dom=parse(content_parser.course_file(request.user)) + dom=etree.parse(content_parser.course_file(request.user)) hw=[] - course = dom.getElementsByTagName('course')[0] - chapters = course.getElementsByTagName('chapter') + course = dom.xpath('//course/@name')[0] + chapters = dom.xpath('//course[@name=$course]/chapter', course=course) responses=StudentModule.objects.filter(student=request.user) for c in chapters: - for s in c.getElementsByTagName('section'): - problems=s.getElementsByTagName('problem') + chname=c.get('name') + for s in dom.xpath('//course[@name=$course]/chapter[@name=$chname]/section', + 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')) scores=[] if len(problems)>0: for p in problems: - id = p.getAttribute('filename') + id = p.get('filename') correct = 0 for response in responses: if response.module_id == id: @@ -60,11 +65,11 @@ def profile(request): correct=response.grade else: correct=0 - total=capa_module.LoncapaModule(p.toxml(), "id").max_score() # TODO: Add state. Not useful now, but maybe someday problems will have randomized max scores? + total=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)) - score={'course':course.getAttribute('name'), - 'section':s.getAttribute("name"), - 'chapter':c.getAttribute("name"), + score={'course':course, + 'section':s.get("name"), + 'chapter':c.get("name"), 'scores':scores, } hw.append(score) diff --git a/settings.py b/settings.py index f42725e7f1..57b3227b1f 120000 --- a/settings.py +++ b/settings.py @@ -1 +1 @@ -settings_new_askbot.py \ No newline at end of file +settings_old_askbot.py \ No newline at end of file