ioc-invicta/web/controller.py

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')