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.
214 lines
6.9 KiB
214 lines
6.9 KiB
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
|
|
|