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