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