From 612f47d551d59c2fd8bfdf08baad8a0cb47bbf23 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sun, 7 Mar 2021 22:01:35 -0700 Subject: [PATCH 1/3] Re-enable file removal --- server/download.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/download.py b/server/download.py index b72b748..ccaa01a 100644 --- a/server/download.py +++ b/server/download.py @@ -21,7 +21,7 @@ def download(ip, dest): dest_file = dest / f print('Grabbing file', source_file) sftp.get(source_file, dest_file) - #sftp.remove(source_file) + sftp.remove(source_file) if sftp: sftp.close() if transport: transport.close() From b213f4cb185cc526a9f74a218ceec5bbcc1eb6d9 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sun, 7 Mar 2021 22:49:10 -0700 Subject: [PATCH 2/3] Rename partially downloaded images --- server/download.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/download.py b/server/download.py index ccaa01a..aadac12 100644 --- a/server/download.py +++ b/server/download.py @@ -18,10 +18,12 @@ def download(ip, dest): for f in files: source_file = '/3dscan/' + f - dest_file = dest / f + dest_file = dest / (f + '.tmp') print('Grabbing file', source_file) sftp.get(source_file, dest_file) sftp.remove(source_file) + done_file = dest / f + dest_file.rename(done_file) if sftp: sftp.close() if transport: transport.close() From d5cfbafbdeeb0023ed5c38bf710f4629819116d8 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sun, 7 Mar 2021 22:49:47 -0700 Subject: [PATCH 3/3] Add status API route --- server/main.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/server/main.py b/server/main.py index b9dae17..68913bf 100644 --- a/server/main.py +++ b/server/main.py @@ -12,6 +12,12 @@ output_folder = Path('./output') app = Flask(__name__, static_folder=str(build_folder), static_url_path='') CORS(app) +status = 'Standby' + +@app.route('/api/status', methods=['GET']) +def status_get(): + return {'status': status} + @app.route('/api/clients', methods=['POST']) def clients_post(): content = request.json @@ -61,7 +67,7 @@ def session_get(cid): photo_glob = path.glob('*.jpg') res = {} - res['photos'] = [x.name for x in photo_glob] + res['photos'] = sorted([x.name for x in photo_glob]) return res @@ -82,6 +88,8 @@ def session_delete(cid): @app.route('/api/clients//session', methods=['POST']) def session_post(cid): + global status + folder = cid path = output_folder / cid @@ -89,6 +97,7 @@ def session_post(cid): abort(404) # go through the photo taking process + status = 'Warming up' # warmup power.lights_on() @@ -96,6 +105,8 @@ def session_post(cid): power.lights_off() time.sleep(0.5) + status = 'Capturing' + # capture power.lights_on() time.sleep(0.25) @@ -108,14 +119,23 @@ def session_post(cid): power.grid_off() power.lights_off() + status = 'Writing to files' + time.sleep(3) + + status = 'Downloading' download.download_all_photos(path) + status = 'Standby' return '' @app.route('/') def index(): return app.send_static_file('index.html') +@app.errorhandler(404) +def not_found(e): + return app.send_static_file('index.html') + @app.route('/output/') def output(filename): return send_from_directory('output/', filename)