You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
6.9 KiB
215 lines
6.9 KiB
3 years ago
|
from flask import make_response, abort
|
||
|
from config import db
|
||
|
from models.meters import (Meter1, Meter1Schema, Meter2, Meter2Schema,
|
||
|
Meter3, Meter3Schema)
|
||
|
from models.devices import (Device1, Device1Schema, Device2, Device2Schema,
|
||
|
Device3, Device3Schema, Device4, Device4Schema,
|
||
|
Device5, Device5Schema, Device6, Device6Schema)
|
||
|
|
||
|
'''
|
||
|
Get Services Note
|
||
|
======================================================================
|
||
|
The functions in this file are for retrieving data stored at the (this)
|
||
|
server. If you want to store any readings taken with the light meters
|
||
|
at Ritherdon, you will need to head to the /post_services.py/ file.
|
||
|
It should be in the same directory at this: /services/.
|
||
|
'''
|
||
|
|
||
|
bad_meter_id_message = "Meter Id. not recognised. Must be between 1 and 3."
|
||
|
bad_device_id_message = "Device Id. not recognised. Must be between 1 and 6."
|
||
|
|
||
|
def get_latest_reading(meter):
|
||
|
if meter == 1:
|
||
|
return get_m1_latest()
|
||
|
elif meter == 2:
|
||
|
return get_m2_latest()
|
||
|
elif meter == 3:
|
||
|
return get_m3_latest()
|
||
|
return make_response(bad_meter_id_message, 400)
|
||
|
|
||
|
def get_all_readings_from_table(name):
|
||
|
if name == 1:
|
||
|
return get_all_readings_for_meter1()
|
||
|
elif name == 2:
|
||
|
return get_all_readings_for_meter2()
|
||
|
elif name == 3:
|
||
|
return get_all_readings_for_meter3()
|
||
|
return make_response(bad_meter_id_message, 400)
|
||
|
|
||
|
def get_all_readings_from_database():
|
||
|
return get_all_readings()
|
||
|
|
||
|
def get_latest_status(device):
|
||
|
if device == 1:
|
||
|
return get_d1_latest()
|
||
|
elif device == 2:
|
||
|
return get_d2_latest()
|
||
|
elif device == 3:
|
||
|
return get_d3_latest()
|
||
|
elif device == 4:
|
||
|
return get_d4_latest()
|
||
|
elif device == 5:
|
||
|
return get_d5_latest()
|
||
|
elif device == 6:
|
||
|
return get_d6_latest()
|
||
|
return make_response(bad_device_id_message, 400)
|
||
|
|
||
|
def get_all_status_logs_from_table(device):
|
||
|
if device == 1:
|
||
|
return get_all_status_logs_for_d1()
|
||
|
elif device == 2:
|
||
|
return get_all_status_logs_for_d2()
|
||
|
elif device == 3:
|
||
|
return get_all_status_logs_for_d3()
|
||
|
elif device == 4:
|
||
|
return get_all_status_logs_for_d4()
|
||
|
elif device == 5:
|
||
|
return get_all_status_logs_for_d5()
|
||
|
elif device == 6:
|
||
|
return get_all_status_logs_for_d6()
|
||
|
return make_response(bad_device_id_message, 400)
|
||
|
|
||
|
def get_all_status_changes_from_database():
|
||
|
return get_all_status_logs()
|
||
|
|
||
|
def get_latest_status_for_all_devices():
|
||
|
return get_all_latest_logs()
|
||
|
|
||
|
'''
|
||
|
The Nitty-Gritty Functions
|
||
|
======================================================================
|
||
|
The functions below are the main functions within this file. The files
|
||
|
above act as "header functions" to be called by the functions in /api.py/.
|
||
|
I find it easier to see what the method names are when this file and
|
||
|
/api.py/ are open side-by-side. At the very least it reduces the amount
|
||
|
I need to scroll up and down the file to find what I am after.
|
||
|
'''
|
||
|
|
||
|
def get_m1_latest():
|
||
|
reading = Meter1.query.order_by(Meter1.id.desc()).first()
|
||
|
meter_schema = Meter1Schema()
|
||
|
return meter_schema.dump(reading)
|
||
|
|
||
|
def get_m2_latest():
|
||
|
reading = Meter2.query.order_by(Meter2.id.desc()).first()
|
||
|
meter_schema = Meter2Schema()
|
||
|
return meter_schema.dump(reading)
|
||
|
|
||
|
def get_m3_latest():
|
||
|
reading = Meter3.query.order_by(Meter3.id.desc()).first()
|
||
|
meter_schema = Meter3Schema()
|
||
|
return meter_schema.dump(reading)
|
||
|
|
||
|
def get_all_readings_for_meter1():
|
||
|
readings = Meter1.query.order_by(Meter1.id.desc()).all()
|
||
|
schema = Meter1Schema(many=True)
|
||
|
data = schema.dump(readings)
|
||
|
return data
|
||
|
|
||
|
def get_all_readings_for_meter2():
|
||
|
readings = Meter2.query.order_by(Meter2.id.desc()).all()
|
||
|
schema = Meter2Schema(many=True)
|
||
|
data = schema.dump(readings)
|
||
|
return data
|
||
|
|
||
|
def get_all_readings_for_meter3():
|
||
|
readings = Meter3.query.order_by(Meter3.id.desc()).all()
|
||
|
schema = Meter3Schema(many=True)
|
||
|
data = schema.dump(readings)
|
||
|
return data
|
||
|
|
||
|
def get_all_readings():
|
||
|
m1 = get_all_readings_for_meter1()
|
||
|
m2 = get_all_readings_for_meter2()
|
||
|
m3 = get_all_readings_for_meter3()
|
||
|
readings = {"meter1": m1, "meter2": m2, "meter3": m3}
|
||
|
return readings
|
||
|
|
||
|
def get_d1_latest():
|
||
|
status = Device1.query.order_by(Device1.id.desc()).first()
|
||
|
device_schema = Device1Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_d2_latest():
|
||
|
status = Device2.query.order_by(Device2.id.desc()).first()
|
||
|
device_schema = Device2Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_d3_latest():
|
||
|
status = Device3.query.order_by(Device3.id.desc()).first()
|
||
|
device_schema = Device3Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_d4_latest():
|
||
|
status = Device4.query.order_by(Device4.id.desc()).first()
|
||
|
device_schema = Device4Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_d5_latest():
|
||
|
status = Device5.query.order_by(Device5.id.desc()).first()
|
||
|
device_schema = Device5Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_d6_latest():
|
||
|
status = Device6.query.order_by(Device6.id.desc()).first()
|
||
|
device_schema = Device6Schema()
|
||
|
return device_schema.dump(status)
|
||
|
|
||
|
def get_all_status_logs_for_d1():
|
||
|
status_logs = Device1.query.order_by(Device1.id.desc()).all()
|
||
|
schema = Device1Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_logs_for_d2():
|
||
|
status_logs = Device2.query.order_by(Device2.id.desc()).all()
|
||
|
schema = Device2Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_logs_for_d3():
|
||
|
status_logs = Device3.query.order_by(Device3.id.desc()).all()
|
||
|
schema = Device3Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_logs_for_d4():
|
||
|
status_logs = Device4.query.order_by(Device4.id.desc()).all()
|
||
|
schema = Device4Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_logs_for_d5():
|
||
|
status_logs = Device5.query.order_by(Device5.id.desc()).all()
|
||
|
schema = Device5Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_logs_for_d6():
|
||
|
status_logs = Device6.query.order_by(Device6.id.desc()).all()
|
||
|
schema = Device6Schema(many=True)
|
||
|
data = schema.dump(status_logs)
|
||
|
return data
|
||
|
|
||
|
def get_all_status_changes_from_database():
|
||
|
d1 = get_all_status_logs_for_d1()
|
||
|
d2 = get_all_status_logs_for_d2()
|
||
|
d3 = get_all_status_logs_for_d3()
|
||
|
d4 = get_all_status_logs_for_d4()
|
||
|
d5 = get_all_status_logs_for_d5()
|
||
|
d6 = get_all_status_logs_for_d6()
|
||
|
logs = {"device 1": d1, "device 2": d2, "device 3": d3,
|
||
|
"device 4": d4, "device 5": d5, "device 6": d6}
|
||
|
return logs
|
||
|
|
||
|
def get_all_latest_logs():
|
||
|
d1 = get_d1_latest()
|
||
|
d2 = get_d2_latest()
|
||
|
d3 = get_d3_latest()
|
||
|
d4 = get_d4_latest()
|
||
|
d5 = get_d5_latest()
|
||
|
d6 = get_d6_latest()
|
||
|
logs = {"device 1": d1, "device 2": d2, "device 3": d3,
|
||
|
"device 4": d4, "device 5": d5, "device 6": d6}
|
||
|
return logs
|