From 64a4a62cf53dbb2d871999f142e76ce62dd1957a Mon Sep 17 00:00:00 2001
From: Calen Pennington
Date: Mon, 2 Jul 2012 20:01:20 -0400
Subject: [PATCH] Don't pass fileobjects to LoncapaProblem
---
common/lib/xmodule/xmodule/capa_module.py | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py
index 57c5fa88ce..b7f8e68b5e 100644
--- a/common/lib/xmodule/xmodule/capa_module.py
+++ b/common/lib/xmodule/xmodule/capa_module.py
@@ -141,9 +141,8 @@ class CapaModule(XModule):
msg = '%s
' % msg.replace('<', '<')
msg += '%s
' % traceback.format_exc().replace('<', '<')
# create a dummy problem with error message instead of failing
- fp = StringIO.StringIO('Problem file %s has an error:%s' % (self.filename, msg))
- fp.name = "StringIO"
- self.lcp = LoncapaProblem(fp, self.location.html_id(), instance_state, seed=seed, system=self.system)
+ problem_text = 'Problem file %s has an error:%s' % (self.filename, msg)
+ self.lcp = LoncapaProblem(problem_text, self.location.html_id(), instance_state, seed=seed, system=self.system)
else:
raise
@@ -395,13 +394,13 @@ class CapaModule(XModule):
correct_map = self.lcp.grade_answers(answers)
except StudentInputError as inst:
# TODO (vshnayder): why is this line here?
- self.lcp = LoncapaProblem(self.system.filestore.open(self.filename),
+ self.lcp = LoncapaProblem(self.system.filestore.open(self.filename).read(),
id=lcp_id, state=old_state, system=self.system)
traceback.print_exc()
return {'success': inst.message}
except:
# TODO: why is this line here?
- self.lcp = LoncapaProblem(self.system.filestore.open(self.filename),
+ self.lcp = LoncapaProblem(self.system.filestore.open(self.filename).read(),
id=lcp_id, state=old_state, system=self.system)
traceback.print_exc()
raise Exception("error in capa_module")
@@ -486,7 +485,7 @@ class CapaModule(XModule):
# reset random number generator seed (note the self.lcp.get_state() in next line)
self.lcp.seed = None
- self.lcp = LoncapaProblem(self.system.filestore.open(self.filename),
+ self.lcp = LoncapaProblem(self.system.filestore.open(self.filename).read(),
self.location.html_id(), self.lcp.get_state(), system=self.system)
event_info['new_state'] = self.lcp.get_state()