all repos — iot-project @ 40bc072b8ba482d332c0c0e4d2f0b08dbf339345

backend_iot/views.py (view raw)

 1from backend_iot import app
 2from backend_iot.db import getLatestRecord, addRecord, get_aqi
 3from flask import request, redirect, render_template, abort
 4from datetime import datetime
 5
 6current_latitude, current_longitude = 45.46437891252755, 7.872049153560152
 7
 8def update_record(record):
 9    record["latitude"] = current_latitude
10    record["longitude"] = current_longitude
11    record["timestamp"] = datetime.now()
12    record["aqi"] = get_aqi(current_latitude, current_longitude)
13
14def latest_or_abort():
15    latest = getLatestRecord()
16    if latest is None:
17        return abort(400)
18    return latest
19
20@app.route("/")
21def index_route():
22    if request.method == 'GET':
23        return render_template("index.html")
24    
25    form = request.form
26    update_record(form)
27    addRecord(**form)
28
29editable_fields = ["t_target", "power", "fan_speed", "auto", "airflow"]
30
31@app.route("/data", methods = ['GET', 'POST'])
32def data_route():
33
34    if request.method == "GET":
35        return latest_or_abort()
36    
37    latest = getLatestRecord()
38    form = request.form
39
40    for key in form.keys():
41        if key not in latest.keys():
42            continue
43        if key == "fan_speed" and latest["auto"]:
44            continue
45        latest[key] = form[key]
46
47    update_record(latest)
48    addRecord(**latest)