2929import io
3030import time
3131import inspect
32+ import shutil
3233from operator import itemgetter
3334from tempfile import mkdtemp
3435from importlib import import_module
8788ml_backend .load (app .config ['DATA_DIR' ])
8889
8990
91+ @app .before_request
9092def initialize_new_session ():
9193 if 'image_uid_counter' in session and 'image_list' in session :
9294 app .logger .debug ('images are already being tracked' )
@@ -101,7 +103,6 @@ def initialize_new_session():
101103 session ['img_input_dir' ] = mkdtemp ()
102104 session ['img_output_dir' ] = mkdtemp ()
103105
104-
105106def get_visualizations ():
106107 """Get visualization classes in context
107108
@@ -161,7 +162,6 @@ def api_root():
161162 displays a hello world message.
162163
163164 """
164- initialize_new_session ()
165165 return jsonify (hello = 'world' )
166166
167167
@@ -174,7 +174,6 @@ def api_images():
174174 TODO: return file URL instead of filename
175175
176176 """
177- initialize_new_session ()
178177 if request .method == 'POST' :
179178 file_upload = request .files ['file' ]
180179 if file_upload :
@@ -197,7 +196,6 @@ def api_images():
197196
198197@app .route ('/api/visualize' , methods = ['GET' ])
199198def api_visualize ():
200- initialize_new_session ()
201199 session ['settings' ] = {}
202200 image_uid = request .args .get ('image' )
203201 vis_name = request .args .get ('visualizer' )
@@ -223,6 +221,14 @@ def api_visualize():
223221 return jsonify (output = output )
224222
225223
224+ @app .route ('/api/reset' , methods = ['GET' ])
225+ def end_session ():
226+ shutil .rmtree (session ['img_input_dir' ])
227+ shutil .rmtree (session ['img_output_dir' ])
228+ session .clear ()
229+ return jsonify (ok = 'true' )
230+
231+
226232@app .route ('/' , methods = ['GET' , 'POST' ])
227233def landing ():
228234 """Landing page for the application
@@ -233,7 +239,6 @@ def landing():
233239 render file selection.
234240
235241 """
236- initialize_new_session ()
237242 if request .method == 'POST' :
238243 session ['vis_name' ] = request .form .get ('choice' )
239244 vis = get_visualizations ()[session ['vis_name' ]]
@@ -262,7 +267,6 @@ def visualization_settings():
262267 attribute.
263268
264269 """
265- initialize_new_session ()
266270 if request .method == 'POST' :
267271 vis = get_visualizations ()[session ['vis_name' ]]
268272 return render_template ('settings.html' ,
@@ -283,7 +287,6 @@ def select_files():
283287 and `result`.
284288
285289 """
286- initialize_new_session ()
287290 if 'file[]' in request .files :
288291 vis = get_visualizations ()[session ['vis_name' ]]
289292 inputs = []
@@ -343,15 +346,13 @@ def select_files():
343346@app .route ('/inputs/<filename>' )
344347def download_inputs (filename ):
345348 """For serving input images"""
346- initialize_new_session ()
347349 return send_from_directory (session ['img_input_dir' ],
348350 filename )
349351
350352
351353@app .route ('/outputs/<filename>' )
352354def download_outputs (filename ):
353355 """For serving output images"""
354- initialize_new_session ()
355356 return send_from_directory (session ['img_output_dir' ],
356357 filename )
357358
0 commit comments