Commit 1717782c by Piotr Mitros

Merge pull request #1776 from MITx/feature/ichuang/psychometrics-fix

fix psychometrics to be compatible with new xblocks
parents 56d5f13b febcb511
......@@ -783,7 +783,7 @@ class CapaModule(CapaFields, XModule):
self.system.track_function('save_problem_check', event_info)
if hasattr(self.system, 'psychometrics_handler'): # update PsychometricsData using callback
self.system.psychometrics_handler(self.get_instance_state())
self.system.psychometrics_handler(self.get_state_for_lcp())
# render problem into HTML
html = self.get_problem_html(encapsulate=False)
......
......@@ -246,6 +246,7 @@ def generate_plots_for_problem(problem):
yset['ydat'] = ydat
if len(ydat) > 3: # try to fit to logistic function if enough data points
try:
cfp = curve_fit(func_2pl, xdat, ydat, [1.0, max_attempts / 2.0])
yset['fitparam'] = cfp
yset['fitpts'] = func_2pl(np.array(xdat), *cfp[0])
......@@ -253,6 +254,8 @@ def generate_plots_for_problem(problem):
fitx = np.linspace(xdat[0], xdat[-1], 100)
yset['fitx'] = fitx
yset['fity'] = func_2pl(np.array(fitx), *cfp[0])
except Exception as err:
log.debug('Error in psychoanalyze curve fitting: %s' % err)
dataset['grade_%d' % grade] = yset
......@@ -302,7 +305,7 @@ 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.objects.get_or_create(
sm, status = StudentModule.objects.get_or_create(
course_id=course_id,
student=user,
module_state_key=module_state_key,
......@@ -329,7 +332,11 @@ def make_psychometrics_data_update_handler(course_id, user, module_state_key):
return
pmd.done = done
pmd.attempts = state['attempts']
try:
pmd.attempts = state.get('attempts',0)
except:
log.exception("no attempts for %s (state=%s)" % (sm,sm.state))
try:
checktimes = eval(pmd.checktimes) # update log of attempt timestamps
except:
......
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