Merge pull request #356 from MITx/kimth/lms-coderesponse
Kimth/lms coderesponse
This commit is contained in:
@@ -39,10 +39,18 @@ def convert_files_to_filenames(answers):
|
||||
'''
|
||||
new_answers = dict()
|
||||
for answer_id in answers.keys():
|
||||
# TODO This should be done more cleanly; however, this fixes bugs
|
||||
# that were introduced with this function.
|
||||
if isinstance(answers[answer_id], list):
|
||||
new_answers[answer_id] = answers[answer_id]
|
||||
if is_uploaded_file(answers[answer_id]):
|
||||
new_answers[answer_id] = answers[answer_id].name
|
||||
else:
|
||||
new_answers[answer_id] = unicode(answers[answer_id])
|
||||
new_answers[answer_id] = answers[answer_id]
|
||||
return new_answers
|
||||
|
||||
def is_uploaded_file(file_to_test):
|
||||
'''
|
||||
Duck typing to check if 'file_to_test' is a File object
|
||||
'''
|
||||
is_file = True
|
||||
for method in ['read', 'name']:
|
||||
if not hasattr(file_to_test, method):
|
||||
is_file = False
|
||||
return is_file
|
||||
|
||||
@@ -15,6 +15,7 @@ import xmodule
|
||||
import capa.calc as calc
|
||||
import capa.capa_problem as lcp
|
||||
from capa.correctmap import CorrectMap
|
||||
from capa.util import convert_files_to_filenames
|
||||
from xmodule import graders, x_module
|
||||
from xmodule.x_module import ModuleSystem
|
||||
from xmodule.graders import Score, aggregate_scores
|
||||
@@ -31,7 +32,7 @@ i4xs = ModuleSystem(
|
||||
user=Mock(),
|
||||
filestore=fs.osfs.OSFS(os.path.dirname(os.path.realpath(__file__))),
|
||||
debug=True,
|
||||
xqueue=None, # TODO FIXME
|
||||
xqueue=None,
|
||||
is_staff=False
|
||||
)
|
||||
|
||||
@@ -278,7 +279,6 @@ class StringResponseWithHintTest(unittest.TestCase):
|
||||
class CodeResponseTest(unittest.TestCase):
|
||||
'''
|
||||
Test CodeResponse
|
||||
|
||||
'''
|
||||
def test_update_score(self):
|
||||
problem_file = os.path.dirname(__file__) + "/test_files/coderesponse.xml"
|
||||
@@ -327,7 +327,18 @@ class CodeResponseTest(unittest.TestCase):
|
||||
self.assertFalse(test_lcp.correct_map.is_queued(answer_ids[j])) # Should be dequeued, message delivered
|
||||
else:
|
||||
self.assertTrue(test_lcp.correct_map.is_queued(answer_ids[j])) # Should be queued, message undelivered
|
||||
|
||||
|
||||
def test_convert_files_to_filenames(self):
|
||||
problem_file = os.path.dirname(__file__) + "/test_files/coderesponse.xml"
|
||||
fp = open(problem_file)
|
||||
answers_with_file = {'1_2_1': 'String-based answer',
|
||||
'1_3_1': ['answer1', 'answer2', 'answer3'],
|
||||
'1_4_1': fp}
|
||||
answers_converted = convert_files_to_filenames(answers_with_file)
|
||||
self.assertEquals(answers_converted['1_2_1'], 'String-based answer')
|
||||
self.assertEquals(answers_converted['1_3_1'], ['answer1', 'answer2', 'answer3'])
|
||||
self.assertEquals(answers_converted['1_4_1'], fp.name)
|
||||
|
||||
|
||||
class ChoiceResponseTest(unittest.TestCase):
|
||||
|
||||
|
||||
@@ -643,7 +643,7 @@ class ModuleSystem(object):
|
||||
user=None,
|
||||
filestore=None,
|
||||
debug=False,
|
||||
xqueue = None,
|
||||
xqueue=None,
|
||||
is_staff=False):
|
||||
'''
|
||||
Create a closure around the system environment.
|
||||
@@ -678,7 +678,10 @@ class ModuleSystem(object):
|
||||
TODO (vshnayder): this will need to change once we have real user roles.
|
||||
'''
|
||||
self.ajax_url = ajax_url
|
||||
self.xqueue = xqueue
|
||||
if xqueue is None:
|
||||
self.xqueue = {'interface':None, 'callback_url':'/', 'default_queuename':'null'}
|
||||
else:
|
||||
self.xqueue = xqueue
|
||||
self.track_function = track_function
|
||||
self.filestore = filestore
|
||||
self.get_module = get_module
|
||||
|
||||
Reference in New Issue
Block a user