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