diff --git a/myems-api/reports/meterenergy.py b/myems-api/reports/meterenergy.py index 8ce183c2..f5fd3d00 100644 --- a/myems-api/reports/meterenergy.py +++ b/myems-api/reports/meterenergy.py @@ -33,6 +33,7 @@ class Reporting: def on_get(req, resp): print(req.params) meter_id = req.params.get('meterid') + meter_uuid = req.params.get('meteruuid') period_type = req.params.get('periodtype') base_period_start_datetime = req.params.get('baseperiodstartdatetime') base_period_end_datetime = req.params.get('baseperiodenddatetime') @@ -42,13 +43,17 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if meter_id is None: + if meter_id is None and meter_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_METER_ID') - else: + + if meter_id is not None: meter_id = str.strip(meter_id) if not meter_id.isdigit() or int(meter_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_METER_ID') + if meter_uuid is not None: + meter_uuid = str.strip(meter_uuid) + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -131,11 +136,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT m.id, m.name, m.cost_center_id, m.energy_category_id, " - " ec.name, ec.unit_of_measure, ec.kgce, ec.kgco2e " - " FROM tbl_meters m, tbl_energy_categories ec " - " WHERE m.id = %s AND m.energy_category_id = ec.id ", (meter_id,)) - row_meter = cursor_system.fetchone() + if meter_id is not None: + cursor_system.execute(" SELECT m.id, m.name, m.cost_center_id, m.energy_category_id, " + " ec.name, ec.unit_of_measure, ec.kgce, ec.kgco2e " + " FROM tbl_meters m, tbl_energy_categories ec " + " WHERE m.id = %s AND m.energy_category_id = ec.id ", (meter_id,)) + row_meter = cursor_system.fetchone() + if meter_uuid is not None: + cursor_system.execute(" SELECT m.id, m.name, m.cost_center_id, m.energy_category_id, " + " ec.name, ec.unit_of_measure, ec.kgce, ec.kgco2e " + " FROM tbl_meters m, tbl_energy_categories ec " + " WHERE m.uuid = %s AND m.energy_category_id = ec.id ", (meter_uuid,)) + row_meter = cursor_system.fetchone() if row_meter is None: if cursor_system: cursor_system.close() @@ -152,6 +164,8 @@ class Reporting: if cnx_historical: cnx_historical.disconnect() raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND', description='API.METER_NOT_FOUND') + if meter_id is not None and int(meter_id) != int(row_meter[0]): + raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND', description='API.METER_NOT_FOUND') meter = dict() meter['id'] = row_meter[0]