diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 4c82eba974..c5d87a52b0 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -1,17 +1,14 @@ import json import logging -from lxml import etree - +from django.conf import settings from django.http import Http404 from django.http import HttpResponse - -from django.conf import settings -from mitxmako.shortcuts import render_to_string - -from models import StudentModule, StudentModuleCache +from lxml import etree from keystore.django import keystore +from mitxmako.shortcuts import render_to_string +from models import StudentModule, StudentModuleCache log = logging.getLogger("mitx.courseware") @@ -247,6 +244,9 @@ def get_module(user, request, location, student_module_cache, position=None): 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, # and this isn't a guest user, create it. if user.is_authenticated(): @@ -272,6 +272,24 @@ def get_module(user, request, location, student_module_cache, position=None): 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): ''' Generic module for extensions. This renders to HTML. diff --git a/lms/templates/staff_problem_info.html b/lms/templates/staff_problem_info.html index 24450c797a..b5e07f8af4 100644 --- a/lms/templates/staff_problem_info.html +++ b/lms/templates/staff_problem_info.html @@ -1,6 +1,7 @@ +${module_content}