11from flask import Flask , request , jsonify , send_file , send_from_directory
22from werkzeug .utils import secure_filename
33import os
4+ import subprocess
45from subprocess import call
56from pathlib import Path
67import json
7- import subprocess
8+ import platform
89from flask_cors import CORS , cross_origin
910
1011cur_path = os .path .dirname (os .path .abspath (__file__ ))
2122@app .route ('/upload/<dir>' , methods = ['POST' ])
2223def upload (dir ):
2324 apikey = request .args .get ('apikey' )
24- dirname = secure_filename (dir ) + "_" + apikey
25-
25+ if (apikey == None ):
26+ dirname = secure_filename (dir )
27+ else :
28+ dirname = secure_filename (dir ) + "_" + apikey
2629 if 'files[]' not in request .files :
2730 resp = jsonify ({'message' : 'No file in the request' })
2831 resp .status_code = 400
@@ -38,7 +41,6 @@ def upload(dir):
3841 if not os .path .isdir (directory_name ):
3942 os .mkdir (directory_name )
4043
41-
4244 for file in files :
4345 if file :
4446 filename = secure_filename (file .filename )
@@ -60,32 +62,52 @@ def upload(dir):
6062 return resp
6163
6264
63-
6465# to download /build/<dir>?fetch=<graphml>. For example, /build/test?fetch=sample1&apikey=xyz
6566@app .route ('/build/<dir>' , methods = ['POST' ])
6667def build (dir ):
6768 graphml_file = request .args .get ('fetch' )
6869 apikey = request .args .get ('apikey' )
69- dirname = secure_filename (dir ) + "_" + apikey
70+ out_dir = request .args .get ('outdir' )
71+ if (apikey == None ):
72+ dirname = secure_filename (dir )
73+ else :
74+ dirname = secure_filename (dir ) + "_" + apikey
7075 makestudy_dir = dirname + "/" + graphml_file #for makestudy
71- dir_path = os .path .abspath (os .path .join (concore_path , graphml_file )) #path for ./build
76+ if (out_dir == None or out_dir == "" ):
77+ dir_path = os .path .abspath (os .path .join (concore_path , graphml_file )) #path for ./build
78+ else :
79+ dir_path = os .path .abspath (os .path .join (concore_path , out_dir )) #path for ./build
7280 if not os .path .exists (dir_path ):
73- proc = call (["./makestudy" , makestudy_dir ], cwd = concore_path )
81+ if (platform .uname ()[0 ]== 'Windows' ):
82+ if (out_dir == None or out_dir == "" ):
83+ proc = call (["makestudy" , makestudy_dir ], shell = True , cwd = concore_path )
84+ else :
85+ proc = call (["makestudy" , makestudy_dir , out_dir ], shell = True , cwd = concore_path )
86+ else :
87+ if (out_dir == None or out_dir == "" ):
88+ proc = call (["./makestudy" , makestudy_dir ], cwd = concore_path )
89+ else :
90+ proc = call (["./makestudy" , makestudy_dir , out_dir ], cwd = concore_path )
7491 if (proc == 0 ):
7592 resp = jsonify ({'message' : 'Directory successfully created' })
7693 resp .status_code = 201
7794 else :
7895 resp = jsonify ({'message' : 'There is an Error' })
79- resp .status_code = 500
80- call (["./build" ], cwd = dir_path )
96+ resp .status_code = 500
97+ if (platform .uname ()[0 ]== 'Windows' ):
98+ call (["build" ], cwd = dir_path , shell = True )
99+ else :
100+ call (["./build" ], cwd = dir_path )
81101 return resp
82102
83-
84103@app .route ('/debug/<dir>' , methods = ['POST' ])
85104def debug (dir ):
86- dir = secure_filename (dir )
87- dir_path = os .path .abspath (os .path .join (concore_path , dir ))
88- proc = call (["./debug" ], cwd = dir_path )
105+ dir_name = secure_filename (dir )
106+ dir_path = os .path .abspath (os .path .join (concore_path , dir_name ))
107+ if (platform .uname ()[0 ]== 'Windows' ):
108+ proc = call (["debug" ],shell = True , cwd = dir_path )
109+ else :
110+ proc = call (["./debug" ], cwd = dir_path )
89111 if (proc == 0 ):
90112 resp = jsonify ({'message' : 'Close the pop window after obtaining result' })
91113 resp .status_code = 201
@@ -95,12 +117,14 @@ def debug(dir):
95117 resp .status_code = 500
96118 return resp
97119
98-
99120@app .route ('/run/<dir>' , methods = ['POST' ])
100121def run (dir ):
101- dir = secure_filename (dir )
102- dir_path = os .path .abspath (os .path .join (concore_path , dir ))
103- proc = call (["./run" ], cwd = dir_path )
122+ dir_name = secure_filename (dir )
123+ dir_path = os .path .abspath (os .path .join (concore_path , dir_name ))
124+ if (platform .uname ()[0 ]== 'Windows' ):
125+ proc = call (["run" ],shell = True , cwd = dir_path )
126+ else :
127+ proc = call (["./run" ], cwd = dir_path )
104128 if (proc == 0 ):
105129 resp = jsonify ({'message' : 'result prepared' })
106130 resp .status_code = 201
@@ -112,9 +136,12 @@ def run(dir):
112136
113137@app .route ('/stop/<dir>' , methods = ['POST' ])
114138def stop (dir ):
115- dir = secure_filename (dir )
116- dir_path = os .path .abspath (os .path .join (concore_path , dir ))
117- proc = call (["./stop" ], cwd = dir_path )
139+ dir_name = secure_filename (dir )
140+ dir_path = os .path .abspath (os .path .join (concore_path , dir_name ))
141+ if (platform .uname ()[0 ]== 'Windows' ):
142+ proc = call (["stop" ],shell = True , cwd = dir_path )
143+ else :
144+ proc = call (["./stop" ], cwd = dir_path )
118145 if (proc == 0 ):
119146 resp = jsonify ({'message' : 'resources cleaned' })
120147 resp .status_code = 201
@@ -127,9 +154,12 @@ def stop(dir):
127154
128155@app .route ('/clear/<dir>' , methods = ['POST' ])
129156def clear (dir ):
130- dir = secure_filename (dir )
131- dir_path = os .path .abspath (os .path .join (concore_path , dir ))
132- proc = call (["./clear" ], cwd = dir_path )
157+ dir_name = secure_filename (dir )
158+ dir_path = os .path .abspath (os .path .join (concore_path , dir_name ))
159+ if (platform .uname ()[0 ]== 'Windows' ):
160+ proc = call (["clear" ],shell = True , cwd = dir_path )
161+ else :
162+ proc = call (["./clear" ], cwd = dir_path )
133163 if (proc == 0 ):
134164 resp = jsonify ({'message' : 'result deleted' })
135165 resp .status_code = 201
@@ -157,11 +187,13 @@ def download(dir):
157187 resp .status_code = 400
158188 return resp
159189
160-
161190@app .route ('/destroy/<dir>' , methods = ['DELETE' ])
162191def destroy (dir ):
163192 dir = secure_filename (dir )
164- proc = call (["./destroy" , dir ], cwd = concore_path )
193+ if (platform .uname ()[0 ]== 'Windows' ):
194+ proc = call (["destroy" , dir ],shell = True , cwd = concore_path )
195+ else :
196+ proc = call (["./destroy" , dir ], cwd = concore_path )
165197 if (proc == 0 ):
166198 resp = jsonify ({'message' : 'Successfuly deleted Dirctory' })
167199 resp .status_code = 201
@@ -181,7 +213,6 @@ def getFilesList(dir):
181213 res = json .dumps (res )
182214 return res
183215
184-
185216@app .route ('/openJupyter/' , methods = ['POST' ])
186217def openJupyter ():
187218 proc = subprocess .Popen (['jupyter' , 'lab' ], shell = False , stdout = subprocess .PIPE , cwd = concore_path )
@@ -195,6 +226,5 @@ def openJupyter():
195226 return resp
196227
197228
198-
199229if __name__ == "__main__" :
200230 app .run (host = "0.0.0.0" , port = 5000 )
0 commit comments