diff --git a/common/lib/capa/capa/util.py b/common/lib/capa/capa/util.py index 211ada4d62..98c250297d 100644 --- a/common/lib/capa/capa/util.py +++ b/common/lib/capa/capa/util.py @@ -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 diff --git a/common/lib/xmodule/xmodule/tests/__init__.py b/common/lib/xmodule/xmodule/tests/__init__.py index 7b1641956c..072abb4908 100644 --- a/common/lib/xmodule/xmodule/tests/__init__.py +++ b/common/lib/xmodule/xmodule/tests/__init__.py @@ -31,7 +31,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 ) diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index f013aac785..9b005d1dae 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -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