summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--R_on_Cloud/default_config.py6
-rw-r--r--instances.py27
-rw-r--r--website/static/website/js/cloud.js37
-rw-r--r--website/static/website/templates/index.html3
-rw-r--r--website/views.py17
5 files changed, 57 insertions, 33 deletions
diff --git a/R_on_Cloud/default_config.py b/R_on_Cloud/default_config.py
index e328b78..59e091c 100644
--- a/R_on_Cloud/default_config.py
+++ b/R_on_Cloud/default_config.py
@@ -13,9 +13,13 @@ DB_PORT_R_FOSSEE_IN = ''
BIN = '/usr/bin/R'
API_URL = "http://127.0.0.1:8001/rscript"
-API_URL_UPLOAD = "http://127.0.0.1:8001/upload"
+API_URL_UPLOAD = "http://127.0.0.1:8001/upload-temp-file"
API_URL_PLOT = "http://127.0.0.1:8001/file"
API_URL_SERVER = "http://127.0.0.1:8001/"
+AUTH_KEY = 'Secret key' # Same key as in web API
+API_URL_RESET = "http://127.0.0.1:8001/reset"
+
+
UPLOADS_PATH = "TBC upload directory path"
MAIN_REPO = "TBC upload directory path"
diff --git a/instances.py b/instances.py
index 6f97563..db3167b 100644
--- a/instances.py
+++ b/instances.py
@@ -16,7 +16,7 @@ from django.template.loader import render_to_string, get_template
from django.core.mail import EmailMultiAlternatives
# importing the local variables
from R_on_Cloud.settings import PROJECT_DIR
-from R_on_Cloud.config import (BIN, API_URL, TEMP_DIR)
+from R_on_Cloud.config import (BIN, API_URL, TEMP_DIR, AUTH_KEY)
def execute_code(code, user_id, R_file_id):
@@ -43,23 +43,28 @@ def execute_code(code, user_id, R_file_id):
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
+ "X-Api-Key": AUTH_KEY,
}
jsondata = json.dumps(body)
if not os.path.exists(TEMP_DIR):
os.makedirs(TEMP_DIR)
result = requests.post(API_URL, json=jsondata, headers=headers)
output = result.json()
- output_data = json.loads(json.dumps(output['data']))
- output_error = json.loads(json.dumps(output['error']))
- plot_exist = json.loads(json.dumps(output['is_plot']))
- plot_path_req = json.loads(json.dumps(output['plot_path_req']))
+ output_auth_error = json.loads(json.dumps(output['auth_error']))
+ if output_auth_error != '400':
+ output_data = json.loads(json.dumps(output['data']))
+ output_error = json.loads(json.dumps(output['error']))
+ plot_exist = json.loads(json.dumps(output['is_plot']))
+ plot_path_req = json.loads(json.dumps(output['plot_path_req']))
- data = {
- 'output': output_data,
- 'error': output_error,
- 'plot_exist': plot_exist,
- 'plot_path': plot_path_req,
- }
+ data = {
+ 'output': output_data,
+ 'error': output_error,
+ 'plot_exist': plot_exist,
+ 'plot_path': plot_path_req,
+ }
+ else:
+ data = {'error': "Invalid request, please try after some time"}
return data
diff --git a/website/static/website/js/cloud.js b/website/static/website/js/cloud.js
index ab4efa1..01153cd 100644
--- a/website/static/website/js/cloud.js
+++ b/website/static/website/js/cloud.js
@@ -674,27 +674,29 @@ $(document.body).ready(function() {
$("#execute-inner").html(
"Execute");
ajax_loader('clear');
- result.setValue(data.output);
if (data.error.length != 0)
{
alert(data.error);
}
- if(data.plot_exist =='True'){
- $plot = $("<img>");
- $plot.attr({
- src: data.plot_path,
- width: '100%'
- });
- $plotbox.html($plot);
- $plotbox_wrapper.modal('show');
- var dt = new Date().getTime();
- $("#plot_download").show();
- $("#plot_download").attr(
- "download", dt +
- '.png');
- $("#plot_download").attr(
- "href", data.plot_path
- );
+ else{
+ result.setValue(data.output);
+ if(data.plot_exist =='True'){
+ $plot = $("<img>");
+ $plot.attr({
+ src: data.plot_path,
+ width: '100%'
+ });
+ $plotbox.html($plot);
+ $plotbox_wrapper.modal('show');
+ var dt = new Date().getTime();
+ $("#plot_download").show();
+ $("#plot_download").attr(
+ "download", dt +
+ '.png');
+ $("#plot_download").attr(
+ "href", data.plot_path
+ );
+ }
}
});
}else{
@@ -1048,6 +1050,7 @@ function doSubmit(){
var user_id = document.getElementById("user_id");
formData.set("user_id", user_id.value)
// Http Request
+
var request = new XMLHttpRequest();
request.open('POST', api_url_upload);
request.send(formData);
diff --git a/website/static/website/templates/index.html b/website/static/website/templates/index.html
index a095bc3..fb0681f 100644
--- a/website/static/website/templates/index.html
+++ b/website/static/website/templates/index.html
@@ -219,7 +219,7 @@
<input type="hidden" id="user_id" name="user_id" value="{{ user_id }}">
<a id="execute" class="btn btn-dark text-white"><span id="execute-inner">Execute</span></a>
<!-- Trigger the modal with a button -->
- <!-- <button id="uploaddataset" type="button" class="btn btn-dark text-white" data-toggle="modal" data-target="#uploaddatasetModal">Upload Dataset</button> -->
+ <button id="uploaddataset" type="button" class="btn btn-dark text-white" data-toggle="modal" data-target="#uploaddatasetModal">Upload Dataset</button>
<button id="reset" type="button" class="btn btn-dark text-white" data-dismiss="modal">Reset</button>
<!-- Modal -->
@@ -230,6 +230,7 @@
<div class="modal-header">
</div>
<div class="modal-body">
+ <p>Upload your CSV dataset file</p>
<form>
<input type="file" id="fileSelect" accept="text/csv" />
<button id="fileuploadsubmit" type="button" >Upload</button>
diff --git a/website/views.py b/website/views.py
index 01e0cc6..4d1af16 100644
--- a/website/views.py
+++ b/website/views.py
@@ -89,13 +89,15 @@ def get_code(file_path, commit_sha):
code = utils.get_file(file_path, commit_sha, main_repo=True)
return code
+
def index(request):
context = {}
user_id = uuid.uuid4()
context['api_url_upload'] = API_URL_UPLOAD
+ context['reset_req_url'] = API_URL_RESET
book_id = request.GET.get('book_id')
user = request.user
- if(request.session['user_id']):
+ if 'user_id' in request.session:
context['user_id'] = request.session['user_id']
else:
context['user_id'] = str(user_id)
@@ -153,6 +155,8 @@ def index(request):
request.session['filepath'], commit_sha)
context['code'] = session_code
context['user_id'] = request.session['user_id']
+ context['reset_req_url'] = API_URL_RESET
+
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
elif book_id:
@@ -182,7 +186,8 @@ def index(request):
'err_msg': """This book is not supported by Scilab on Cloud."""
""" You are redirected to home page."""
}
-
+ context['api_url_upload'] = API_URL_UPLOAD
+ context['reset_req_url'] = API_URL_RESET
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
@@ -208,6 +213,8 @@ def index(request):
'book_id': int(book_id),
}
+ context['api_url_upload'] = API_URL_UPLOAD
+ context['reset_req_url'] = API_URL_RESET
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
else:
@@ -219,6 +226,8 @@ def index(request):
'err_msg': """This example is currently not available on """
"""scilab on cloud."""
}
+ context['api_url_upload'] = API_URL_UPLOAD
+ context['reset_req_url'] = API_URL_RESET
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
@@ -290,6 +299,7 @@ def index(request):
'err_msg': """This example is currently not available on"""
""" scilab on cloud."""
}
+ context['api_url_upload'] = API_URL_UPLOAD
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
subcateg_all = TextbookCompanionSubCategoryList.objects\
@@ -322,7 +332,8 @@ def index(request):
# if not user.is_anonymous():
# context['user'] = user
-
+ context['api_url_upload'] = API_URL_UPLOAD
+ context['reset_req_url'] = API_URL_RESET
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))