Source code for epyt_flow.rest_api.scada_data.data_handlers

  1"""
  2This module provides REST API handlers for accessing the final sensor readings
  3(e.g. pressure, flow rate, etc.).
  4"""
  5import warnings
  6import falcon
  7
  8from .handlers import ScadaDataBaseHandler
  9
 10
[docs] 11class ScadaDataPressuresHandler(ScadaDataBaseHandler): 12 """ 13 Class for handling GET requests for the pressure sensor readings of a given SCADA data instance. 14 """
[docs] 15 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 16 """ 17 Gets the pressure sensor readings of a given SCADA data instance. 18 19 Parameters 20 ---------- 21 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 22 Response instance. 23 data_id : `str` 24 UUID of the SCADA data. 25 """ 26 try: 27 if self.scada_data_mgr.validate_uuid(data_id) is False: 28 self.send_invalid_resource_id_error(resp) 29 return 30 31 data_pressures = self.scada_data_mgr.get(data_id).get_data_pressures().tolist() 32 self.send_json_response(resp, data_pressures) 33 except Exception as ex: 34 warnings.warn(str(ex)) 35 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
36 37
[docs] 38class ScadaDataFlowsHandler(ScadaDataBaseHandler): 39 """ 40 Class for handling GET requests for the flow sensor readings of a given SCADA data instance. 41 """
[docs] 42 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 43 """ 44 Gets the flow sensor readings of a given SCADA data instance. 45 46 Parameters 47 ---------- 48 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 49 Response instance. 50 data_id : `str` 51 UUID of the SCADA data. 52 """ 53 try: 54 if self.scada_data_mgr.validate_uuid(data_id) is False: 55 self.send_invalid_resource_id_error(resp) 56 return 57 58 data_flows = self.scada_data_mgr.get(data_id).get_data_flows().tolist() 59 self.send_json_response(resp, data_flows) 60 except Exception as ex: 61 warnings.warn(str(ex)) 62 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
63 64
[docs] 65class ScadaDataDemandsHandler(ScadaDataBaseHandler): 66 """ 67 Class for handling GET requests for the demand sensor readings of a given SCADA data instance. 68 """
[docs] 69 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 70 """ 71 Gets the demand sensor readings of a given SCADA data instance. 72 73 Parameters 74 ---------- 75 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 76 Response instance. 77 data_id : `str` 78 UUID of the SCADA data. 79 """ 80 try: 81 if self.scada_data_mgr.validate_uuid(data_id) is False: 82 self.send_invalid_resource_id_error(resp) 83 return 84 85 data_demands = self.scada_data_mgr.get(data_id).get_data_demands().tolist() 86 self.send_json_response(resp, data_demands) 87 except Exception as ex: 88 warnings.warn(str(ex)) 89 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
90 91
[docs] 92class ScadaDataValveStatesHandler(ScadaDataBaseHandler): 93 """ 94 Class for handling GET requests for the valve state sensor readings 95 of a given SCADA data instance. 96 """
[docs] 97 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 98 """ 99 Gets the valve state sensor readings of a given SCADA data instance. 100 101 Parameters 102 ---------- 103 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 104 Response instance. 105 data_id : `str` 106 UUID of the SCADA data. 107 """ 108 try: 109 if self.scada_data_mgr.validate_uuid(data_id) is False: 110 self.send_invalid_resource_id_error(resp) 111 return 112 113 data_demands = self.scada_data_mgr.get(data_id).get_data_valves_state().tolist() 114 self.send_json_response(resp, data_demands) 115 except Exception as ex: 116 warnings.warn(str(ex)) 117 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
118 119
[docs] 120class ScadaDataPumpStatesHandler(ScadaDataBaseHandler): 121 """ 122 Class for handling GET requests for the pump state sensor readings 123 of a given SCADA data instance. 124 """
[docs] 125 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 126 """ 127 Gets the pump state sensor readings of a given SCADA data instance. 128 129 Parameters 130 ---------- 131 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 132 Response instance. 133 data_id : `str` 134 UUID of the SCADA data. 135 """ 136 try: 137 if self.scada_data_mgr.validate_uuid(data_id) is False: 138 self.send_invalid_resource_id_error(resp) 139 return 140 141 data_demands = self.scada_data_mgr.get(data_id).get_data_pumps_state().tolist() 142 self.send_json_response(resp, data_demands) 143 except Exception as ex: 144 warnings.warn(str(ex)) 145 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
146 147
[docs] 148class ScadaDataTankVolumesHandler(ScadaDataBaseHandler): 149 """ 150 Class for handling GET requests for the tank volume sensor readings 151 of a given SCADA data instance. 152 """
[docs] 153 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 154 """ 155 Gets the tank volume sensor readings of a given SCADA data instance. 156 157 Parameters 158 ---------- 159 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 160 Response instance. 161 data_id : `str` 162 UUID of the SCADA data. 163 """ 164 try: 165 if self.scada_data_mgr.validate_uuid(data_id) is False: 166 self.send_invalid_resource_id_error(resp) 167 return 168 169 data_demands = self.scada_data_mgr.get(data_id).get_data_tanks_water_volume().tolist() 170 self.send_json_response(resp, data_demands) 171 except Exception as ex: 172 warnings.warn(str(ex)) 173 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
174 175
[docs] 176class ScadaDataNodesQualityHandler(ScadaDataBaseHandler): 177 """ 178 Class for handling GET requests for the node quality sensor readings 179 of a given SCADA data instance. 180 """
[docs] 181 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 182 """ 183 Gets the node quality sensor readings of a given SCADA data instance. 184 185 Parameters 186 ---------- 187 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 188 Response instance. 189 data_id : `str` 190 UUID of the SCADA data. 191 """ 192 try: 193 if self.scada_data_mgr.validate_uuid(data_id) is False: 194 self.send_invalid_resource_id_error(resp) 195 return 196 197 data_nodes_quality = self.scada_data_mgr.get(data_id).get_data_nodes_quality().tolist() 198 self.send_json_response(resp, data_nodes_quality) 199 except Exception as ex: 200 warnings.warn(str(ex)) 201 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
202 203
[docs] 204class ScadaDataLinksQualityHandler(ScadaDataBaseHandler): 205 """ 206 Class for handling GET requests for the link quality sensor readings 207 of a given SCADA data instance. 208 """
[docs] 209 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 210 """ 211 Gets the link/pipe quality sensor readings of a given SCADA data instance. 212 213 Parameters 214 ---------- 215 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 216 Response instance. 217 data_id : `str` 218 UUID of the SCADA data. 219 """ 220 try: 221 if self.scada_data_mgr.validate_uuid(data_id) is False: 222 self.send_invalid_resource_id_error(resp) 223 return 224 225 data_links_quality = self.scada_data_mgr.get(data_id).get_data_links_quality().tolist() 226 self.send_json_response(resp, data_links_quality) 227 except Exception as ex: 228 warnings.warn(str(ex)) 229 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
230 231
[docs] 232class ScadaDataNodeBulkSpeciesHandler(ScadaDataBaseHandler): 233 """ 234 Class for handling GET requests for the bulk species node concentration sensor readings 235 of a given SCADA data instance. 236 """
[docs] 237 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 238 """ 239 Gets the bulk species node concentrations sensor readings of a given SCADA data instance. 240 241 Parameters 242 ---------- 243 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 244 Response instance. 245 data_id : `str` 246 UUID of the SCADA data. 247 """ 248 try: 249 if self.scada_data_mgr.validate_uuid(data_id) is False: 250 self.send_invalid_resource_id_error(resp) 251 return 252 253 data_conc = self.scada_data_mgr.get(data_id).\ 254 get_data_bulk_species_node_concentration().tolist() 255 self.send_json_response(resp, data_conc) 256 except Exception as ex: 257 warnings.warn(str(ex)) 258 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
259 260
[docs] 261class ScadaDataLinkBulkSpeciesHandler(ScadaDataBaseHandler): 262 """ 263 Class for handling GET requests for the bulk species link/pipe concentration sensor readings 264 of a given SCADA data instance. 265 """
[docs] 266 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 267 """ 268 Gets the bulk species link/pipe concentrations sensor readings of a 269 given SCADA data instance. 270 271 Parameters 272 ---------- 273 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 274 Response instance. 275 data_id : `str` 276 UUID of the SCADA data. 277 """ 278 try: 279 if self.scada_data_mgr.validate_uuid(data_id) is False: 280 self.send_invalid_resource_id_error(resp) 281 return 282 283 data_conc = self.scada_data_mgr.get(data_id).\ 284 get_data_bulk_species_link_concentration().tolist() 285 self.send_json_response(resp, data_conc) 286 except Exception as ex: 287 warnings.warn(str(ex)) 288 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR
289 290
[docs] 291class ScadaDataSurfaceSpeciesHandler(ScadaDataBaseHandler): 292 """ 293 Class for handling GET requests for the surface species concentration sensor readings 294 of a given SCADA data instance. 295 """
[docs] 296 def on_get(self, _, resp: falcon.Response, data_id: str) -> None: 297 """ 298 Gets the surface species concentrations sensor readings of a given SCADA data instance. 299 300 Parameters 301 ---------- 302 resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_ 303 Response instance. 304 data_id : `str` 305 UUID of the SCADA data. 306 """ 307 try: 308 if self.scada_data_mgr.validate_uuid(data_id) is False: 309 self.send_invalid_resource_id_error(resp) 310 return 311 312 data_links_quality = self.scada_data_mgr.get(data_id).\ 313 get_data_surface_species_concentration().tolist() 314 self.send_json_response(resp, data_links_quality) 315 except Exception as ex: 316 warnings.warn(str(ex)) 317 resp.status = falcon.HTTP_INTERNAL_SERVER_ERROR