|
|
|
@ -1,16 +1,19 @@ |
|
|
|
|
import os |
|
|
|
|
import json |
|
|
|
|
import time |
|
|
|
|
from pathlib import Path |
|
|
|
|
from flask import Flask, request |
|
|
|
|
from flask import Flask, request, abort, send_from_directory |
|
|
|
|
from flask_cors import CORS |
|
|
|
|
|
|
|
|
|
import power, capture, download |
|
|
|
|
|
|
|
|
|
build_folder = Path('../client/build') |
|
|
|
|
output_folder = Path('./output') |
|
|
|
|
app = Flask(__name__, static_folder=str(build_folder), static_url_path='') |
|
|
|
|
CORS(app) |
|
|
|
|
|
|
|
|
|
@app.route('/api/clients', methods=['POST']) |
|
|
|
|
def clients(): |
|
|
|
|
def clients_post(): |
|
|
|
|
content = request.json |
|
|
|
|
print('Recieved:', content) |
|
|
|
|
|
|
|
|
@ -32,8 +35,89 @@ def clients(): |
|
|
|
|
|
|
|
|
|
return {'client_id': client_id} |
|
|
|
|
|
|
|
|
|
@app.route('/api/clients/<cid>', methods=['GET']) |
|
|
|
|
def clients_get(cid): |
|
|
|
|
folder = cid |
|
|
|
|
path = output_folder / cid |
|
|
|
|
|
|
|
|
|
if not path.exists(): |
|
|
|
|
abort(404) |
|
|
|
|
|
|
|
|
|
info_file = path / 'info.json' |
|
|
|
|
info_text = info_file.read_text() |
|
|
|
|
res = json.loads(info_text) |
|
|
|
|
photo_glob = path.glob('*.jpg') |
|
|
|
|
res['has_photos'] = bool(list(photo_glob)) |
|
|
|
|
|
|
|
|
|
return res |
|
|
|
|
|
|
|
|
|
@app.route('/api/clients/<cid>/session', methods=['GET']) |
|
|
|
|
def session_get(cid): |
|
|
|
|
folder = cid |
|
|
|
|
path = output_folder / cid |
|
|
|
|
|
|
|
|
|
if not path.exists(): |
|
|
|
|
abort(404) |
|
|
|
|
|
|
|
|
|
photo_glob = path.glob('*.jpg') |
|
|
|
|
res = {} |
|
|
|
|
res['photos'] = [x.name for x in photo_glob] |
|
|
|
|
|
|
|
|
|
return res |
|
|
|
|
|
|
|
|
|
@app.route('/api/clients/<cid>/session', methods=['DELETE']) |
|
|
|
|
def session_delete(cid): |
|
|
|
|
folder = cid |
|
|
|
|
path = output_folder / cid |
|
|
|
|
|
|
|
|
|
if not path.exists(): |
|
|
|
|
abort(404) |
|
|
|
|
|
|
|
|
|
photo_glob = path.glob('*.jpg') |
|
|
|
|
|
|
|
|
|
for p in photo_glob: |
|
|
|
|
p.unlink() |
|
|
|
|
|
|
|
|
|
return '' |
|
|
|
|
|
|
|
|
|
@app.route('/api/clients/<cid>/session', methods=['POST']) |
|
|
|
|
def session_post(cid): |
|
|
|
|
folder = cid |
|
|
|
|
path = output_folder / cid |
|
|
|
|
|
|
|
|
|
if not path.exists(): |
|
|
|
|
abort(404) |
|
|
|
|
|
|
|
|
|
# go through the photo taking process |
|
|
|
|
|
|
|
|
|
# warmup |
|
|
|
|
power.lights_on() |
|
|
|
|
time.sleep(4) |
|
|
|
|
power.lights_off() |
|
|
|
|
time.sleep(0.5) |
|
|
|
|
|
|
|
|
|
# capture |
|
|
|
|
power.lights_on() |
|
|
|
|
time.sleep(0.25) |
|
|
|
|
capture.trigger_capture() |
|
|
|
|
time.sleep(1) |
|
|
|
|
power.grid_on() |
|
|
|
|
time.sleep(0.25) |
|
|
|
|
capture.trigger_capture() |
|
|
|
|
time.sleep(1) |
|
|
|
|
power.grid_off() |
|
|
|
|
power.lights_off() |
|
|
|
|
|
|
|
|
|
download.download_all_photos(path) |
|
|
|
|
|
|
|
|
|
return '' |
|
|
|
|
|
|
|
|
|
@app.route('/') |
|
|
|
|
def index(): |
|
|
|
|
return app.send_static_file('index.html') |
|
|
|
|
|
|
|
|
|
app.run() |
|
|
|
|
@app.route('/output/<path:filename>') |
|
|
|
|
def output(filename): |
|
|
|
|
return send_from_directory('output/', filename) |
|
|
|
|
|
|
|
|
|
app.run(host='0.0.0.0') |
|
|
|
|