Merge branch 'master' of https://git.tannercollin.com/tanner/3Dshock
This commit is contained in:
commit
b2cc6f4723
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2021 Tanner and Elijah
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -5,14 +5,26 @@ from pathlib import Path
|
||||||
from flask import Flask, request, abort, send_from_directory
|
from flask import Flask, request, abort, send_from_directory
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
|
|
||||||
import power, capture, download
|
import power, capture, download, settings
|
||||||
|
|
||||||
|
import logging
|
||||||
|
log = logging.getLogger('werkzeug')
|
||||||
|
if not settings.DEBUG:
|
||||||
|
log.setLevel(logging.ERROR)
|
||||||
|
|
||||||
build_folder = Path('../client/build')
|
build_folder = Path('../client/build')
|
||||||
output_folder = Path('./output')
|
output_folder = Path('./output')
|
||||||
app = Flask(__name__, static_folder=str(build_folder), static_url_path='')
|
app = Flask(__name__, static_folder=str(build_folder), static_url_path='')
|
||||||
CORS(app)
|
CORS(app)
|
||||||
|
|
||||||
status = 'Standby'
|
STANDBY = 0
|
||||||
|
WARMUP = 1
|
||||||
|
CAPTURING_PHOTO = 2
|
||||||
|
CAPTURING_GRID = 3
|
||||||
|
WRITING = 4
|
||||||
|
DOWNLOADING = 5
|
||||||
|
|
||||||
|
status = STANDBY
|
||||||
|
|
||||||
@app.route('/api/status', methods=['GET'])
|
@app.route('/api/status', methods=['GET'])
|
||||||
def status_get():
|
def status_get():
|
||||||
|
@ -21,7 +33,6 @@ def status_get():
|
||||||
@app.route('/api/clients', methods=['POST'])
|
@app.route('/api/clients', methods=['POST'])
|
||||||
def clients_post():
|
def clients_post():
|
||||||
content = request.json
|
content = request.json
|
||||||
print('Recieved:', content)
|
|
||||||
|
|
||||||
phone = str(content['phone'])
|
phone = str(content['phone'])
|
||||||
|
|
||||||
|
@ -39,6 +50,7 @@ def clients_post():
|
||||||
|
|
||||||
client_id = folder
|
client_id = folder
|
||||||
|
|
||||||
|
print('POST client:', content, 'cid:', client_id)
|
||||||
return {'client_id': client_id}
|
return {'client_id': client_id}
|
||||||
|
|
||||||
@app.route('/api/clients/<cid>', methods=['GET'])
|
@app.route('/api/clients/<cid>', methods=['GET'])
|
||||||
|
@ -55,6 +67,7 @@ def clients_get(cid):
|
||||||
photo_glob = path.glob('*.jpg')
|
photo_glob = path.glob('*.jpg')
|
||||||
res['has_photos'] = bool(list(photo_glob))
|
res['has_photos'] = bool(list(photo_glob))
|
||||||
|
|
||||||
|
print('GET client:', cid, 'res:', res)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@app.route('/api/clients/<cid>/session', methods=['GET'])
|
@app.route('/api/clients/<cid>/session', methods=['GET'])
|
||||||
|
@ -84,12 +97,14 @@ def session_delete(cid):
|
||||||
for p in photo_glob:
|
for p in photo_glob:
|
||||||
p.unlink()
|
p.unlink()
|
||||||
|
|
||||||
|
print('DELETE session:', cid)
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
@app.route('/api/clients/<cid>/session', methods=['POST'])
|
@app.route('/api/clients/<cid>/session', methods=['POST'])
|
||||||
def session_post(cid):
|
def session_post(cid):
|
||||||
global status
|
global status
|
||||||
|
|
||||||
|
print('POST session:', cid)
|
||||||
folder = cid
|
folder = cid
|
||||||
path = output_folder / cid
|
path = output_folder / cid
|
||||||
|
|
||||||
|
@ -97,14 +112,14 @@ def session_post(cid):
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
# go through the photo taking process
|
# go through the photo taking process
|
||||||
status = 'Warming up'
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# warmup
|
# warmup
|
||||||
|
status = WARMUP
|
||||||
power.lights_on()
|
power.lights_on()
|
||||||
time.sleep(4)
|
time.sleep(2)
|
||||||
power.lights_off()
|
power.lights_off()
|
||||||
time.sleep(0.5)
|
time.sleep(1)
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
print('Problem with lights: {} - {}'.format(e.__class__.__name__, str(e)))
|
print('Problem with lights: {} - {}'.format(e.__class__.__name__, str(e)))
|
||||||
print()
|
print()
|
||||||
|
@ -112,27 +127,30 @@ def session_post(cid):
|
||||||
print()
|
print()
|
||||||
abort(500)
|
abort(500)
|
||||||
|
|
||||||
status = 'Capturing'
|
|
||||||
|
|
||||||
# capture
|
# capture
|
||||||
|
status = CAPTURING_PHOTO
|
||||||
power.lights_on()
|
power.lights_on()
|
||||||
time.sleep(0.25)
|
time.sleep(0.25)
|
||||||
capture.trigger_capture()
|
capture.trigger_capture()
|
||||||
time.sleep(1)
|
time.sleep(2)
|
||||||
power.grid_on()
|
|
||||||
time.sleep(0.25)
|
#status = CAPTURING_GRID
|
||||||
capture.trigger_capture()
|
#power.grid_on()
|
||||||
time.sleep(1)
|
#time.sleep(2)
|
||||||
power.grid_off()
|
#capture.trigger_capture()
|
||||||
|
#time.sleep(2)
|
||||||
|
#power.grid_off()
|
||||||
|
|
||||||
|
status = WRITING
|
||||||
|
time.sleep(3)
|
||||||
power.lights_off()
|
power.lights_off()
|
||||||
|
|
||||||
status = 'Writing to files'
|
status = DOWNLOADING
|
||||||
|
download.download_all_photos(path)
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
|
||||||
status = 'Downloading'
|
status = STANDBY
|
||||||
download.download_all_photos(path)
|
print('Finished.')
|
||||||
|
|
||||||
status = 'Standby'
|
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user