Commit 42091665 by Calen Pennington

Make staff histograms work again

parent 69e45796
import json import json
import logging import logging
from lxml import etree from django.conf import settings
from django.http import Http404 from django.http import Http404
from django.http import HttpResponse from django.http import HttpResponse
from lxml import etree
from django.conf import settings from keystore.django import keystore
from mitxmako.shortcuts import render_to_string from mitxmako.shortcuts import render_to_string
from models import StudentModule, StudentModuleCache from models import StudentModule, StudentModuleCache
from keystore.django import keystore
log = logging.getLogger("mitx.courseware") log = logging.getLogger("mitx.courseware")
...@@ -247,6 +244,9 @@ def get_module(user, request, location, student_module_cache, position=None): ...@@ -247,6 +244,9 @@ def get_module(user, request, location, student_module_cache, position=None):
module = descriptor.xmodule_constructor(system)(instance_state, shared_state) module = descriptor.xmodule_constructor(system)(instance_state, shared_state)
if settings.MITX_FEATURES.get('DISPLAY_HISTOGRAMS_TO_STAFF') and user.is_staff:
module = add_histogram(module)
# If StudentModule for this instance wasn't already in the database, # If StudentModule for this instance wasn't already in the database,
# and this isn't a guest user, create it. # and this isn't a guest user, create it.
if user.is_authenticated(): if user.is_authenticated():
...@@ -272,6 +272,24 @@ def get_module(user, request, location, student_module_cache, position=None): ...@@ -272,6 +272,24 @@ def get_module(user, request, location, student_module_cache, position=None):
return (module, instance_module, shared_module, descriptor.type) return (module, instance_module, shared_module, descriptor.type)
def add_histogram(module):
original_get_html = module.get_html
def get_html():
module_id = module.id
print "Rendering Histogram for ", module_id
histogram = grade_histogram(module_id)
print histogram
render_histogram = len(histogram) > 0
staff_context = {'definition': json.dumps(module.definition, indent=4),
'element_id': module.location.html_id(),
'histogram': json.dumps(histogram),
'render_histogram': render_histogram,
'module_content': original_get_html()}
return render_to_string("staff_problem_info.html", staff_context)
module.get_html = get_html
return module
def render_x_module(user, module, student_module_cache, position=None): def render_x_module(user, module, student_module_cache, position=None):
''' Generic module for extensions. This renders to HTML. ''' Generic module for extensions. This renders to HTML.
......
${module_content}
<div class="staff_info"> <div class="staff_info">
${xml | h} ${definition | h}
</div> </div>
%if render_histogram: %if render_histogram:
<div id="histogram_${module_id}" class="histogram" data-histogram="${histogram}"></div> <div id="histogram_${element_id}" class="histogram" data-histogram="${histogram}"></div>
%endif %endif
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