From 131e3120b9ffe5372ecb0231cdf9b5a628bd92b2 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 13 Mar 2013 16:35:50 -0400 Subject: [PATCH] Try to make psychometrics work with new storage model code --- lms/djangoapps/courseware/module_render.py | 4 ++-- lms/djangoapps/psychometrics/psychoanalyze.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 5ef7dff421..3356f44f44 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -297,9 +297,9 @@ def get_module_for_descriptor(user, request, descriptor, model_data_cache, cours # pass position specified in URL to module through ModuleSystem system.set('position', position) system.set('DEBUG', settings.DEBUG) - if settings.MITX_FEATURES.get('ENABLE_PSYCHOMETRICS') and instance_module is not None: + if settings.MITX_FEATURES.get('ENABLE_PSYCHOMETRICS'): system.set('psychometrics_handler', # set callback for updating PsychometricsData - make_psychometrics_data_update_handler(instance_module)) + make_psychometrics_data_update_handler(course_id, user, descriptor.location.url())) try: module = descriptor.xmodule(system) diff --git a/lms/djangoapps/psychometrics/psychoanalyze.py b/lms/djangoapps/psychometrics/psychoanalyze.py index 28a5c4437c..3e9edcc997 100644 --- a/lms/djangoapps/psychometrics/psychoanalyze.py +++ b/lms/djangoapps/psychometrics/psychoanalyze.py @@ -297,12 +297,18 @@ def generate_plots_for_problem(problem): #----------------------------------------------------------------------------- -def make_psychometrics_data_update_handler(studentmodule): +def make_psychometrics_data_update_handler(course_id, user, module_state_key): """ Construct and return a procedure which may be called to update the PsychometricsData instance for the given StudentModule instance. """ - sm = studentmodule + sm = studentmodule.objects.get_or_create( + course_id=course_id, + student=user, + module_state_key=module_state_key, + defaults={'state': '{}', 'module_type': 'problem'}, + ) + try: pmd = PsychometricData.objects.using(db).get(studentmodule=sm) except PsychometricData.DoesNotExist: