63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
from flask import Blueprint, request, render_template, flash
|
|
|
|
from .db import get_db
|
|
|
|
bp = Blueprint('data', __name__, url_prefix='/')
|
|
|
|
@bp.route('/')
|
|
def view_all():
|
|
data = get_db().execute(
|
|
'SELECT * FROM data ORDER BY device_id'
|
|
).fetchall()
|
|
ids = get_db().execute(
|
|
'SELECT DISTINCT device_id FROM data ORDER BY device_id'
|
|
).fetchall()
|
|
|
|
button_count = {}
|
|
for id in ids:
|
|
c = get_db().execute(
|
|
'SELECT count(*) FROM data WHERE sensor_type="button" AND device_id="' + id[0] + '"'
|
|
).fetchall()
|
|
button_count[str(id[0])] = c[0][0];
|
|
|
|
data2 = [] # an array of data per esp ID
|
|
for id in ids:
|
|
dd = []
|
|
for d in data:
|
|
if id[0] == d[2]:
|
|
dd.append(d)
|
|
data2.append(dd)
|
|
return render_template('data/index.html', data=data2, button_count=button_count)
|
|
|
|
@bp.route('/add', methods=('GET', 'POST'))
|
|
def add():
|
|
if request.method == 'POST':
|
|
device_id = request.form['device_id']
|
|
sensor_type = request.form['sensor_type']
|
|
data = request.form['data']
|
|
|
|
error = ''
|
|
if not device_id:
|
|
error = 'device_id required'
|
|
elif not sensor_type:
|
|
error = 'sensor_type required'
|
|
elif not data:
|
|
error = 'data required'
|
|
|
|
if not error:
|
|
db = get_db()
|
|
try:
|
|
db.execute(
|
|
'INSERT INTO data (device_id, sensor_type, data) VALUES (?, ?, ?)',
|
|
(device_id, sensor_type, data),
|
|
)
|
|
db.commit()
|
|
except db.IntegrityError:
|
|
return '', 500
|
|
else:
|
|
flash(error)
|
|
return render_template('data/add.html'), 400
|
|
|
|
flash('Record created successfully')
|
|
return render_template('data/add.html')
|