Commit a42e8e71 by swdanielli

Merge pull request #39 from pmitros/upload_file_bug

limit the response dataType to json
parents e1697b64 9d5a9568
...@@ -362,6 +362,7 @@ class RecommenderXBlock(HelperXBlock): ...@@ -362,6 +362,7 @@ class RecommenderXBlock(HelperXBlock):
tracker.emit(event, {'uploadedFileName': 'FILE_TYPE_ERROR'}) tracker.emit(event, {'uploadedFileName': 'FILE_TYPE_ERROR'})
response.status = 415 response.status = 415
response.body = json.dumps({'error': file_type_error_msg}) response.body = json.dumps({'error': file_type_error_msg})
response.headers['Content-Type'] = 'application/json'
return response return response
# Check whether file size exceeds threshold (30MB) # Check whether file size exceeds threshold (30MB)
...@@ -370,6 +371,7 @@ class RecommenderXBlock(HelperXBlock): ...@@ -370,6 +371,7 @@ class RecommenderXBlock(HelperXBlock):
tracker.emit(event, {'uploadedFileName': 'FILE_SIZE_ERROR'}) tracker.emit(event, {'uploadedFileName': 'FILE_SIZE_ERROR'})
response.status = 413 response.status = 413
response.body = json.dumps({'error': 'Size of uploaded file exceeds threshold'}) response.body = json.dumps({'error': 'Size of uploaded file exceeds threshold'})
response.headers['Content-Type'] = 'application/json'
return response return response
return file_type return file_type
...@@ -383,6 +385,7 @@ class RecommenderXBlock(HelperXBlock): ...@@ -383,6 +385,7 @@ class RecommenderXBlock(HelperXBlock):
tracker.emit(event, {'uploadedFileName': 'IMPROPER_FS_SETUP'}) tracker.emit(event, {'uploadedFileName': 'IMPROPER_FS_SETUP'})
response.status = 404 response.status = 404
response.body = json.dumps({'error': error}) response.body = json.dumps({'error': error})
response.headers['Content-Type'] = 'application/json'
return response return response
def _init_template_lookup(self): def _init_template_lookup(self):
...@@ -556,8 +559,8 @@ class RecommenderXBlock(HelperXBlock): ...@@ -556,8 +559,8 @@ class RecommenderXBlock(HelperXBlock):
return self._raise_pyfs_error('upload_screenshot') return self._raise_pyfs_error('upload_screenshot')
response = Response() response = Response()
response.body = str("fs://" + file_name) response.body = json.dumps({'file_name': str("fs://" + file_name)})
response.headers['Content-Type'] = 'text/plain' response.headers['Content-Type'] = 'application/json'
tracker.emit('upload_screenshot', tracker.emit('upload_screenshot',
{'uploadedFileName': response.body}) {'uploadedFileName': response.body})
response.status = 200 response.status = 200
...@@ -815,7 +818,7 @@ class RecommenderXBlock(HelperXBlock): ...@@ -815,7 +818,7 @@ class RecommenderXBlock(HelperXBlock):
Import resources into the recommender. Import resources into the recommender.
""" """
response = Response() response = Response()
response.headers['Content-Type'] = 'text/plain' response.headers['Content-Type'] = 'application/json'
if not self.get_user_is_staff(): if not self.get_user_is_staff():
response.status = 403 response.status = 403
response.body = json.dumps({'error': 'Only staff can import resources'}) response.body = json.dumps({'error': 'Only staff can import resources'})
...@@ -850,7 +853,6 @@ class RecommenderXBlock(HelperXBlock): ...@@ -850,7 +853,6 @@ class RecommenderXBlock(HelperXBlock):
data['recommendations'] = self.recommendations data['recommendations'] = self.recommendations
tracker.emit('import_resources', {'Status': 'SUCCESS', 'data': data}) tracker.emit('import_resources', {'Status': 'SUCCESS', 'data': data})
response.headers['Content-Type'] = 'application/json'
response.body = json.dumps(data, sort_keys=True) response.body = json.dumps(data, sort_keys=True)
response.status = 200 response.status = 200
return response return response
......
...@@ -221,6 +221,7 @@ function RecommenderXBlock(runtime, element, init_data) { ...@@ -221,6 +221,7 @@ function RecommenderXBlock(runtime, element, init_data) {
cache: false, cache: false,
processData: false, processData: false,
async: false, async: false,
dataType: 'json',
success: function(result) { success: function(result) {
/* Rendering new resources */ /* Rendering new resources */
$('.recommenderResource', element).remove(); $('.recommenderResource', element).remove();
...@@ -442,11 +443,17 @@ function RecommenderXBlock(runtime, element, init_data) { ...@@ -442,11 +443,17 @@ function RecommenderXBlock(runtime, element, init_data) {
cache: false, cache: false,
processData: false, processData: false,
async: false, async: false,
dataType: 'json',
success: function(result) { success: function(result) {
/* Writing the resource to database */ /* Writing the resource to database */
data['description'] = result; if ('success' in result && result['success'].search('Submission aborted!') > -1) {
upload_file_error(result['success']);
}
else {
data['description'] = result['file_name'];
if (writeType === writeDatabaseEnum.ADD) { addResource(data); } if (writeType === writeDatabaseEnum.ADD) { addResource(data); }
else if (writeType === writeDatabaseEnum.EDIT) { editResource(data); } else if (writeType === writeDatabaseEnum.EDIT) { editResource(data); }
}
}, },
error: function(result) { error: function(result) {
/** /**
...@@ -456,12 +463,23 @@ function RecommenderXBlock(runtime, element, init_data) { ...@@ -456,12 +463,23 @@ function RecommenderXBlock(runtime, element, init_data) {
* 413: Size of uploaded file exceeds threshold * 413: Size of uploaded file exceeds threshold
*/ */
var data = JSON.parse(result.responseText) var data = JSON.parse(result.responseText)
if (data.error) { alert(data.error); } if (data.error) { upload_file_error(data.error); }
else { upload_file_error('file uploading error'); }
},
});
}
/**
* When error occurs during file uploading, warn the user and reset the form.
* @param {string} error_msg Error message showed to the user.
* @param {element} formDiv The submission form for the resource.
* @param {string} writeType The string indicating we are going to add or edit resource.
*/
function upload_file_error(error_msg, formDiv, writeType) {
alert(error_msg);
$("input[name='file']", formDiv).val(''); $("input[name='file']", formDiv).val('');
if (writeType === writeDatabaseEnum.ADD) { enableAddSubmit(); } if (writeType === writeDatabaseEnum.ADD) { enableAddSubmit(); }
else if (writeType === writeDatabaseEnum.EDIT) { enableEditSubmit(); } else if (writeType === writeDatabaseEnum.EDIT) { enableEditSubmit(); }
},
});
} }
/** /**
......
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