From 98385b8900604f3b2f9a7026653873991e43bca0 Mon Sep 17 00:00:00 2001 From: Caozhenhui <823914102@qq.com> Date: Wed, 19 Jan 2022 16:49:12 +0800 Subject: [PATCH] added alternative parameter uuid --- myems-api/reports/combinedequipmentcost.py | 40 +++++++++++++----- .../reports/combinedequipmentefficiency.py | 36 ++++++++++++---- .../combinedequipmentenergycategory.py | 30 +++++++++++--- .../reports/combinedequipmentenergyitem.py | 30 +++++++++++--- myems-api/reports/combinedequipmentincome.py | 30 +++++++++++--- myems-api/reports/combinedequipmentload.py | 30 +++++++++++--- myems-api/reports/combinedequipmentoutput.py | 30 +++++++++++--- myems-api/reports/combinedequipmentsaving.py | 30 +++++++++++--- .../reports/combinedequipmentstatistics.py | 30 +++++++++++--- myems-api/reports/equipmentcost.py | 38 +++++++++++++---- myems-api/reports/equipmentefficiency.py | 38 +++++++++++++---- myems-api/reports/equipmentenergycategory.py | 38 +++++++++++++---- myems-api/reports/equipmentenergyitem.py | 38 +++++++++++++---- myems-api/reports/equipmentincome.py | 38 +++++++++++++---- myems-api/reports/equipmentload.py | 39 ++++++++++++++---- myems-api/reports/equipmentoutput.py | 38 +++++++++++++---- myems-api/reports/equipmentsaving.py | 38 +++++++++++++---- myems-api/reports/equipmentstatistics.py | 38 +++++++++++++---- myems-api/reports/metercost.py | 2 - myems-api/reports/meterenergy.py | 2 - myems-api/reports/meterrealtime.py | 6 +-- myems-api/reports/metersubmetersbalance.py | 6 +-- myems-api/reports/metertrend.py | 2 - myems-api/reports/shopfloorcost.py | 38 +++++++++++++---- myems-api/reports/shopfloorenergycategory.py | 38 +++++++++++++---- myems-api/reports/shopfloorenergyitem.py | 38 +++++++++++++---- myems-api/reports/shopfloorload.py | 38 +++++++++++++---- myems-api/reports/shopfloorsaving.py | 38 +++++++++++++---- myems-api/reports/shopfloorstatistics.py | 39 ++++++++++++++---- myems-api/reports/spacecost.py | 38 +++++++++++++---- myems-api/reports/spaceefficiency.py | 39 ++++++++++++++---- myems-api/reports/spaceenergycategory.py | 38 +++++++++++++---- myems-api/reports/spaceenergyitem.py | 38 +++++++++++++---- myems-api/reports/spaceincome.py | 38 +++++++++++++---- myems-api/reports/spaceload.py | 38 +++++++++++++---- myems-api/reports/spaceoutput.py | 38 +++++++++++++---- myems-api/reports/spacesaving.py | 38 +++++++++++++---- myems-api/reports/spacestatistics.py | 38 +++++++++++++---- myems-api/reports/storecost.py | 38 +++++++++++++---- myems-api/reports/storeenergycategory.py | 38 +++++++++++++---- myems-api/reports/storeenergyitem.py | 38 +++++++++++++---- myems-api/reports/storeload.py | 38 +++++++++++++---- myems-api/reports/storesaving.py | 38 +++++++++++++---- myems-api/reports/storestatistics.py | 38 +++++++++++++---- myems-api/reports/tenantbill.py | 41 +++++++++++++++---- myems-api/reports/tenantcost.py | 40 ++++++++++++++---- myems-api/reports/tenantenergycategory.py | 40 ++++++++++++++---- myems-api/reports/tenantenergyitem.py | 40 ++++++++++++++---- myems-api/reports/tenantload.py | 40 ++++++++++++++---- myems-api/reports/tenantsaving.py | 40 ++++++++++++++---- myems-api/reports/tenantstatistics.py | 40 ++++++++++++++---- 51 files changed, 1353 insertions(+), 375 deletions(-) diff --git a/myems-api/reports/combinedequipmentcost.py b/myems-api/reports/combinedequipmentcost.py index 7085f33a..b17adfda 100644 --- a/myems-api/reports/combinedequipmentcost.py +++ b/myems-api/reports/combinedequipmentcost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -73,7 +85,7 @@ class Reporting: try: base_start_datetime_utc = datetime.strptime(base_start_datetime_local, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc) - \ - timedelta(minutes=timezone_offset) + timedelta(minutes=timezone_offset) except ValueError: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description="API.INVALID_BASE_PERIOD_START_DATETIME") @@ -84,7 +96,7 @@ class Reporting: try: base_end_datetime_utc = datetime.strptime(base_end_datetime_local, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc) - \ - timedelta(minutes=timezone_offset) + timedelta(minutes=timezone_offset) except ValueError: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description="API.INVALID_BASE_PERIOD_END_DATETIME") @@ -102,7 +114,7 @@ class Reporting: try: reporting_start_datetime_utc = datetime.strptime(reporting_start_datetime_local, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc) - \ - timedelta(minutes=timezone_offset) + timedelta(minutes=timezone_offset) except ValueError: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description="API.INVALID_REPORTING_PERIOD_START_DATETIME") @@ -115,7 +127,7 @@ class Reporting: try: reporting_end_datetime_utc = datetime.strptime(reporting_end_datetime_local, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc) - \ - timedelta(minutes=timezone_offset) + timedelta(minutes=timezone_offset) except ValueError: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description="API.INVALID_REPORTING_PERIOD_END_DATETIME") @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() @@ -566,7 +584,7 @@ class Reporting: result['reporting_period']['total_increment_rate'] = \ (result['reporting_period']['total'] - result['base_period']['total']) / \ result['base_period']['total'] \ - if result['base_period']['total'] > Decimal(0.0) else None + if result['base_period']['total'] > Decimal(0.0) else None result['parameters'] = { "names": parameters_data['names'], diff --git a/myems-api/reports/combinedequipmentefficiency.py b/myems-api/reports/combinedequipmentefficiency.py index 9da8340d..2ac52c8c 100644 --- a/myems-api/reports/combinedequipmentefficiency.py +++ b/myems-api/reports/combinedequipmentefficiency.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -47,15 +49,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', + if combined_equipment_id is None and combined_equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -142,10 +156,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentenergycategory.py b/myems-api/reports/combinedequipmentenergycategory.py index cf2524b1..450d2a0f 100644 --- a/myems-api/reports/combinedequipmentenergycategory.py +++ b/myems-api/reports/combinedequipmentenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentenergyitem.py b/myems-api/reports/combinedequipmentenergyitem.py index 28049fe3..13fa2933 100644 --- a/myems-api/reports/combinedequipmentenergyitem.py +++ b/myems-api/reports/combinedequipmentenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentincome.py b/myems-api/reports/combinedequipmentincome.py index 4c89d1f5..e5a8c8aa 100644 --- a/myems-api/reports/combinedequipmentincome.py +++ b/myems-api/reports/combinedequipmentincome.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentload.py b/myems-api/reports/combinedequipmentload.py index 17a0c065..4c1292b5 100644 --- a/myems-api/reports/combinedequipmentload.py +++ b/myems-api/reports/combinedequipmentload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentoutput.py b/myems-api/reports/combinedequipmentoutput.py index 593d9a43..81153a2a 100644 --- a/myems-api/reports/combinedequipmentoutput.py +++ b/myems-api/reports/combinedequipmentoutput.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentsaving.py b/myems-api/reports/combinedequipmentsaving.py index 74ff007b..8d4284dc 100644 --- a/myems-api/reports/combinedequipmentsaving.py +++ b/myems-api/reports/combinedequipmentsaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -139,10 +151,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/combinedequipmentstatistics.py b/myems-api/reports/combinedequipmentstatistics.py index 21e21468..e801883b 100644 --- a/myems-api/reports/combinedequipmentstatistics.py +++ b/myems-api/reports/combinedequipmentstatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) combined_equipment_id = req.params.get('combinedequipmentid') + combined_equipment_uuid = req.params.get('combinedequipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,17 +47,27 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if combined_equipment_id is None: + if combined_equipment_id is None and combined_equipment_uuid is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') - else: + + if combined_equipment_id is not None: combined_equipment_id = str.strip(combined_equipment_id) if not combined_equipment_id.isdigit() or int(combined_equipment_id) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_COMBINED_EQUIPMENT_ID') + if combined_equipment_uuid is not None: + combined_equipment_uuid = str.strip(combined_equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(combined_equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_COMBINED_EQUIPMENT_UUID') + if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') else: @@ -136,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_combined_equipments " - " WHERE id = %s ", (combined_equipment_id,)) - row_combined_equipment = cursor_system.fetchone() + if combined_equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE id = %s ", (combined_equipment_id,)) + row_combined_equipment = cursor_system.fetchone() + elif combined_equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_combined_equipments " + " WHERE uuid = %s ", (combined_equipment_uuid,)) + row_combined_equipment = cursor_system.fetchone() if row_combined_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentcost.py b/myems-api/reports/equipmentcost.py index f4bf8b3b..6d215cc5 100644 --- a/myems-api/reports/equipmentcost.py +++ b/myems-api/reports/equipmentcost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentefficiency.py b/myems-api/reports/equipmentefficiency.py index 1faf4854..c015ca24 100644 --- a/myems-api/reports/equipmentefficiency.py +++ b/myems-api/reports/equipmentefficiency.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentenergycategory.py b/myems-api/reports/equipmentenergycategory.py index 4aa5dbba..adfbab0f 100644 --- a/myems-api/reports/equipmentenergycategory.py +++ b/myems-api/reports/equipmentenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentenergyitem.py b/myems-api/reports/equipmentenergyitem.py index 34547528..fe21f8c7 100644 --- a/myems-api/reports/equipmentenergyitem.py +++ b/myems-api/reports/equipmentenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentincome.py b/myems-api/reports/equipmentincome.py index ad5c0c42..85f6bb5e 100644 --- a/myems-api/reports/equipmentincome.py +++ b/myems-api/reports/equipmentincome.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentload.py b/myems-api/reports/equipmentload.py index 058ff50f..f44ee9dc 100644 --- a/myems-api/reports/equipmentload.py +++ b/myems-api/reports/equipmentload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_equipment_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() @@ -150,7 +172,6 @@ class Reporting: if cnx_historical: cnx_historical.disconnect() raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND', description='API.EQUIPMENT_NOT_FOUND') - equipment = dict() equipment['id'] = row_equipment[0] equipment['name'] = row_equipment[1] diff --git a/myems-api/reports/equipmentoutput.py b/myems-api/reports/equipmentoutput.py index 6469f97b..dee84500 100644 --- a/myems-api/reports/equipmentoutput.py +++ b/myems-api/reports/equipmentoutput.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentsaving.py b/myems-api/reports/equipmentsaving.py index 8a31982f..b82cf292 100644 --- a/myems-api/reports/equipmentsaving.py +++ b/myems-api/reports/equipmentsaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/equipmentstatistics.py b/myems-api/reports/equipmentstatistics.py index 7e26edc7..278e7c68 100644 --- a/myems-api/reports/equipmentstatistics.py +++ b/myems-api/reports/equipmentstatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -34,6 +35,7 @@ class Reporting: def on_get(req, resp): print(req.params) equipment_id = req.params.get('equipmentid') + equipment_uuid = req.params.get('equipmentuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -43,12 +45,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if equipment_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') - else: + if equipment_id is None and equipment_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_id is not None: equipment_id = str.strip(equipment_id) if not equipment_id.isdigit() or int(equipment_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_EQUIPMENT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if equipment_uuid is not None: + equipment_uuid = str.strip(equipment_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(equipment_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,10 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, cost_center_id " - " FROM tbl_equipments " - " WHERE id = %s ", (equipment_id,)) - row_equipment = cursor_system.fetchone() + if equipment_id is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE id = %s ", (equipment_id,)) + row_equipment = cursor_system.fetchone() + elif equipment_uuid is not None: + cursor_system.execute(" SELECT id, name, cost_center_id " + " FROM tbl_equipments " + " WHERE uuid = %s ", (equipment_uuid,)) + row_equipment = cursor_system.fetchone() if row_equipment is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/metercost.py b/myems-api/reports/metercost.py index 91cc580f..3800d5a3 100644 --- a/myems-api/reports/metercost.py +++ b/myems-api/reports/metercost.py @@ -178,8 +178,6 @@ 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] meter['name'] = row_meter[1] diff --git a/myems-api/reports/meterenergy.py b/myems-api/reports/meterenergy.py index 732fd1dd..4f23ed50 100644 --- a/myems-api/reports/meterenergy.py +++ b/myems-api/reports/meterenergy.py @@ -170,8 +170,6 @@ 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] diff --git a/myems-api/reports/meterrealtime.py b/myems-api/reports/meterrealtime.py index 7f2194fc..98fc97c0 100644 --- a/myems-api/reports/meterrealtime.py +++ b/myems-api/reports/meterrealtime.py @@ -66,13 +66,13 @@ class Reporting: 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.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() elif 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.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() @@ -87,8 +87,6 @@ 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] diff --git a/myems-api/reports/metersubmetersbalance.py b/myems-api/reports/metersubmetersbalance.py index fe62fc89..2cf3e80d 100644 --- a/myems-api/reports/metersubmetersbalance.py +++ b/myems-api/reports/metersubmetersbalance.py @@ -112,13 +112,13 @@ class Reporting: 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.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() elif 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.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() @@ -134,8 +134,6 @@ class Reporting: cnx_energy.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') master_meter = dict() master_meter['id'] = row_meter[0] diff --git a/myems-api/reports/metertrend.py b/myems-api/reports/metertrend.py index 6c89e3ef..6897b68f 100644 --- a/myems-api/reports/metertrend.py +++ b/myems-api/reports/metertrend.py @@ -129,8 +129,6 @@ 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] meter['name'] = row_meter[1] diff --git a/myems-api/reports/shopfloorcost.py b/myems-api/reports/shopfloorcost.py index 39917c55..0f1edae7 100644 --- a/myems-api/reports/shopfloorcost.py +++ b/myems-api/reports/shopfloorcost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/shopfloorenergycategory.py b/myems-api/reports/shopfloorenergycategory.py index 296cccad..e19356ad 100644 --- a/myems-api/reports/shopfloorenergycategory.py +++ b/myems-api/reports/shopfloorenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/shopfloorenergyitem.py b/myems-api/reports/shopfloorenergyitem.py index aeb59b84..0003308e 100644 --- a/myems-api/reports/shopfloorenergyitem.py +++ b/myems-api/reports/shopfloorenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/shopfloorload.py b/myems-api/reports/shopfloorload.py index 4184d797..b07bc641 100644 --- a/myems-api/reports/shopfloorload.py +++ b/myems-api/reports/shopfloorload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_EQUIPMENT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/shopfloorsaving.py b/myems-api/reports/shopfloorsaving.py index 93c589ab..2970ff82 100644 --- a/myems-api/reports/shopfloorsaving.py +++ b/myems-api/reports/shopfloorsaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -134,10 +150,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/shopfloorstatistics.py b/myems-api/reports/shopfloorstatistics.py index 8ef87f7c..27da853e 100644 --- a/myems-api/reports/shopfloorstatistics.py +++ b/myems-api/reports/shopfloorstatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) shopfloor_id = req.params.get('shopfloorid') + shopfloor_uuid = req.params.get('shopflooruuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if shopfloor_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') - else: + if shopfloor_id is None and shopfloor_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_id is not None: shopfloor_id = str.strip(shopfloor_id) if not shopfloor_id.isdigit() or int(shopfloor_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SHOPFLOOR_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_ID') + + if shopfloor_uuid is not None: + shopfloor_uuid = str.strip(shopfloor_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(shopfloor_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SHOPFLOOR_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -130,11 +146,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_shopfloors " - " WHERE id = %s ", (shopfloor_id,)) - row_shopfloor = cursor_system.fetchone() + if shopfloor_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE id = %s ", (shopfloor_id,)) + row_shopfloor = cursor_system.fetchone() + elif shopfloor_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_shopfloors " + " WHERE uuid = %s ", (shopfloor_uuid,)) + row_shopfloor = cursor_system.fetchone() if row_shopfloor is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spacecost.py b/myems-api/reports/spacecost.py index e5f0db3a..1512eed7 100644 --- a/myems-api/reports/spacecost.py +++ b/myems-api/reports/spacecost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceefficiency.py b/myems-api/reports/spaceefficiency.py index 1783ad86..95fc8895 100644 --- a/myems-api/reports/spaceefficiency.py +++ b/myems-api/reports/spaceefficiency.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -132,11 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceenergycategory.py b/myems-api/reports/spaceenergycategory.py index 8484ad74..62c04b6c 100644 --- a/myems-api/reports/spaceenergycategory.py +++ b/myems-api/reports/spaceenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceenergyitem.py b/myems-api/reports/spaceenergyitem.py index e89b0cc2..233ae142 100644 --- a/myems-api/reports/spaceenergyitem.py +++ b/myems-api/reports/spaceenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceincome.py b/myems-api/reports/spaceincome.py index 4c61715c..b930e8db 100644 --- a/myems-api/reports/spaceincome.py +++ b/myems-api/reports/spaceincome.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceload.py b/myems-api/reports/spaceload.py index 0d7811e6..324d1ac1 100644 --- a/myems-api/reports/spaceload.py +++ b/myems-api/reports/spaceload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spaceoutput.py b/myems-api/reports/spaceoutput.py index 629de36c..e349e3d0 100644 --- a/myems-api/reports/spaceoutput.py +++ b/myems-api/reports/spaceoutput.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -133,10 +149,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spacesaving.py b/myems-api/reports/spacesaving.py index d11a213c..83759d3c 100644 --- a/myems-api/reports/spacesaving.py +++ b/myems-api/reports/spacesaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -37,6 +38,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -46,12 +48,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -136,10 +152,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/spacestatistics.py b/myems-api/reports/spacestatistics.py index 1630be39..254eb8bd 100644 --- a/myems-api/reports/spacestatistics.py +++ b/myems-api/reports/spacestatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) space_id = req.params.get('spaceid') + space_uuid = req.params.get('spaceuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if space_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') - else: + if space_id is None and space_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_id is not None: space_id = str.strip(space_id) if not space_id.isdigit() or int(space_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_SPACE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_ID') + + if space_uuid is not None: + space_uuid = str.strip(space_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_SPACE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_spaces " - " WHERE id = %s ", (space_id,)) - row_space = cursor_system.fetchone() + if space_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE id = %s ", (space_id,)) + row_space = cursor_system.fetchone() + elif space_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_spaces " + " WHERE uuid = %s ", (space_uuid,)) + row_space = cursor_system.fetchone() if row_space is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storecost.py b/myems-api/reports/storecost.py index 045c499e..0d9f1ee9 100644 --- a/myems-api/reports/storecost.py +++ b/myems-api/reports/storecost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storeenergycategory.py b/myems-api/reports/storeenergycategory.py index a4cac711..3f32a35b 100644 --- a/myems-api/reports/storeenergycategory.py +++ b/myems-api/reports/storeenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storeenergyitem.py b/myems-api/reports/storeenergyitem.py index f0b7421a..3576c2ff 100644 --- a/myems-api/reports/storeenergyitem.py +++ b/myems-api/reports/storeenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storeload.py b/myems-api/reports/storeload.py index e35f9bbb..31734079 100644 --- a/myems-api/reports/storeload.py +++ b/myems-api/reports/storeload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storesaving.py b/myems-api/reports/storesaving.py index f6d801d8..4e562d07 100644 --- a/myems-api/reports/storesaving.py +++ b/myems-api/reports/storesaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -134,10 +150,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/storestatistics.py b/myems-api/reports/storestatistics.py index 648fd83f..249b29de 100644 --- a/myems-api/reports/storestatistics.py +++ b/myems-api/reports/storestatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -36,6 +37,7 @@ class Reporting: def on_get(req, resp): print(req.params) store_id = req.params.get('storeid') + store_uuid = req.params.get('storeuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -45,12 +47,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if store_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') - else: + if store_id is None and store_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_id is not None: store_id = str.strip(store_id) if not store_id.isdigit() or int(store_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_STORE_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_ID') + + if store_uuid is not None: + space_uuid = str.strip(store_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_STORE_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -132,10 +148,16 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_stores " - " WHERE id = %s ", (store_id,)) - row_store = cursor_system.fetchone() + if store_id is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE id = %s ", (store_id,)) + row_store = cursor_system.fetchone() + elif store_uuid is not None: + cursor_system.execute(" SELECT id, name, area, cost_center_id " + " FROM tbl_stores " + " WHERE uuid = %s ", (store_uuid,)) + row_store = cursor_system.fetchone() if row_store is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantbill.py b/myems-api/reports/tenantbill.py index 661e1363..4deca0e5 100644 --- a/myems-api/reports/tenantbill.py +++ b/myems-api/reports/tenantbill.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -32,6 +33,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') reporting_start_datetime_local = req.params.get('reportingperiodstartdatetime') reporting_end_datetime_local = req.params.get('reportingperiodenddatetime') # This value is intentionally left daily @@ -40,12 +42,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') timezone_offset = int(config.utc_offset[1:3]) * 60 + int(config.utc_offset[4:6]) if config.utc_offset[0] == '-': @@ -93,11 +109,18 @@ class Reporting: cnx_billing = mysql.connector.connect(**config.myems_billing_db) cursor_billing = cnx_billing.cursor() - cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " - " c.email, c.phone, cost_center_id " - " FROM tbl_tenants t, tbl_contacts c " - " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantcost.py b/myems-api/reports/tenantcost.py index 6c4cc7c4..9da29eb5 100644 --- a/myems-api/reports/tenantcost.py +++ b/myems-api/reports/tenantcost.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantenergycategory.py b/myems-api/reports/tenantenergycategory.py index 346fcee4..8fe23a9f 100644 --- a/myems-api/reports/tenantenergycategory.py +++ b/myems-api/reports/tenantenergycategory.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantenergyitem.py b/myems-api/reports/tenantenergyitem.py index 7b2b3937..246ed77e 100644 --- a/myems-api/reports/tenantenergyitem.py +++ b/myems-api/reports/tenantenergyitem.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantload.py b/myems-api/reports/tenantload.py index b64e646a..35fb4662 100644 --- a/myems-api/reports/tenantload.py +++ b/myems-api/reports/tenantload.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantsaving.py b/myems-api/reports/tenantsaving.py index 8f184665..c7e83a61 100644 --- a/myems-api/reports/tenantsaving.py +++ b/myems-api/reports/tenantsaving.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -134,10 +150,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close() diff --git a/myems-api/reports/tenantstatistics.py b/myems-api/reports/tenantstatistics.py index 6a94a331..d2932cc1 100644 --- a/myems-api/reports/tenantstatistics.py +++ b/myems-api/reports/tenantstatistics.py @@ -1,3 +1,4 @@ +import re import falcon import simplejson as json import mysql.connector @@ -35,6 +36,7 @@ class Reporting: def on_get(req, resp): print(req.params) tenant_id = req.params.get('tenantid') + tenant_uuid = req.params.get('tenantuuid') period_type = req.params.get('periodtype') base_start_datetime_local = req.params.get('baseperiodstartdatetime') base_end_datetime_local = req.params.get('baseperiodenddatetime') @@ -44,12 +46,26 @@ class Reporting: ################################################################################################################ # Step 1: valid parameters ################################################################################################################ - if tenant_id is None: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') - else: + if tenant_id is None and tenant_uuid is None: + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_id is not None: tenant_id = str.strip(tenant_id) if not tenant_id.isdigit() or int(tenant_id) <= 0: - raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_TENANT_ID') + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_ID') + + if tenant_uuid is not None: + space_uuid = str.strip(tenant_uuid) + regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I) + match = regex.match(space_uuid) + if not bool(match): + raise falcon.HTTPError(falcon.HTTP_400, + title='API.BAD_REQUEST', + description='API.INVALID_TENANT_UUID') if period_type is None: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_PERIOD_TYPE') @@ -131,10 +147,18 @@ class Reporting: cnx_historical = mysql.connector.connect(**config.myems_historical_db) cursor_historical = cnx_historical.cursor() - cursor_system.execute(" SELECT id, name, area, cost_center_id " - " FROM tbl_tenants " - " WHERE id = %s ", (tenant_id,)) - row_tenant = cursor_system.fetchone() + if tenant_id is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.id = %s AND t.contact_id = c.id ", (tenant_id,)) + row_tenant = cursor_system.fetchone() + elif tenant_uuid is not None: + cursor_system.execute(" SELECT t.id, t.name, t.buildings, t.floors, t.rooms, t.lease_number, " + " c.email, c.phone, cost_center_id " + " FROM tbl_tenants t, tbl_contacts c " + " WHERE t.uuid = %s AND t.contact_id = c.id ", (tenant_uuid,)) + row_tenant = cursor_system.fetchone() if row_tenant is None: if cursor_system: cursor_system.close()