Skip to content

Commit b8f426f

Browse files
author
Jan Steinke
authored
Merge pull request #1 from merantix/jan-pr
improve handling of session
2 parents 0ba0cac + 347dbde commit b8f426f

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

picasso/picasso.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io
3030
import time
3131
import inspect
32+
import shutil
3233
from operator import itemgetter
3334
from tempfile import mkdtemp
3435
from importlib import import_module
@@ -87,6 +88,7 @@
8788
ml_backend.load(app.config['DATA_DIR'])
8889

8990

91+
@app.before_request
9092
def 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-
105106
def 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'])
199198
def 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'])
227233
def 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>')
344347
def 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>')
352354
def download_outputs(filename):
353355
"""For serving output images"""
354-
initialize_new_session()
355356
return send_from_directory(session['img_output_dir'],
356357
filename)
357358

tests/test_picasso.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ def test_listing_images(self, client):
103103
response = client.get(url_for('api_images'))
104104
assert response.status_code == 200
105105

106+
def test_end_session(self, client):
107+
response = client.get(url_for('end_session'))
108+
assert response.status_code == 200
109+
106110

107111
class TestBaseModel:
108112

0 commit comments

Comments
 (0)