Commit 6004aa73 by kimth

modx_dispatch combines file and non-file submission into single answer dict

parent 75e7693c
...@@ -273,24 +273,23 @@ def modx_dispatch(request, dispatch=None, id=None): ...@@ -273,24 +273,23 @@ def modx_dispatch(request, dispatch=None, id=None):
''' '''
# ''' (fix emacs broken parsing) # ''' (fix emacs broken parsing)
post = request.POST.copy() # Check for submitted files
post = dict()
if request.FILES:
for inputfile_id in request.FILES.keys():
post[inputfile_id] = request.FILES[inputfile_id]
# Catch the use of FormData in xmodule frontend for 'problem_check'. After this block, # Catch the use of FormData in xmodule frontend for 'problem_check'. After this block,
# the 'post' dict is functionally equivalent before and after the use of FormData # the 'post' dict is functionally equivalent before and after the use of FormData
# TODO: A more elegant solution? # TODO: A more elegant solution?
if post.has_key('__answers_querystring'): for key in request.POST.keys():
qs = post.pop('__answers_querystring')[0] if key == '__answers_querystring':
qsdict = parse_qs(qs, keep_blank_values=True) qs = request.POST.get(key)
for key in qsdict.keys(): qsdict = parse_qs(qs, keep_blank_values=True)
qsdict[key] = qsdict[key][0] # parse_qs returns { key: list } for qskey in qsdict.keys():
post.update(qsdict) post[qskey] = qsdict[qskey][0] # parse_qs returns {key: list}
else:
# Check for submitted files, send it to S3 immediately. LMS/xqueue manipulates only the post[key] = request.POST.get(key)
# pointer, which is saved as the student "submission"
if request.FILES:
for inputfile_id in request.FILES.keys():
s3_identifier = xqueue_interface.upload_files_to_s3(request.FILES[inputfile_id])
post.update({inputfile_id: s3_identifier})
student_module_cache = StudentModuleCache(request.user, modulestore().get_item(id)) student_module_cache = StudentModuleCache(request.user, modulestore().get_item(id))
instance, instance_module, shared_module, module_type = get_module(request.user, request, id, student_module_cache) instance, instance_module, shared_module, module_type = get_module(request.user, request, id, student_module_cache)
......
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