Code Duplication    Length = 119-119 lines in 3 locations

myems-api/core/energystoragecontainer.py 3 locations

@@ 1664-1782 (lines=119) @@
1661
        resp.status = falcon.HTTP_204
1662
1663
1664
class EnergyStorageContainerDCDCCollection:
1665
    def __init__(self):
1666
        """Initializes Class"""
1667
        pass
1668
1669
    @staticmethod
1670
    def on_options(req, resp, id_):
1671
        resp.status = falcon.HTTP_200
1672
1673
    @staticmethod
1674
    def on_get(req, resp, id_):
1675
        access_control(req)
1676
        if not id_.isdigit() or int(id_) <= 0:
1677
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1678
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
1679
1680
        cnx = mysql.connector.connect(**config.myems_system_db)
1681
        cursor = cnx.cursor()
1682
1683
        cursor.execute(" SELECT name "
1684
                       " FROM tbl_energy_storage_containers "
1685
                       " WHERE id = %s ", (id_,))
1686
        if cursor.fetchone() is None:
1687
            cursor.close()
1688
            cnx.close()
1689
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
1690
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
1691
1692
        query = (" SELECT id, name, uuid "
1693
                 " FROM tbl_energy_storage_containers_dcdcs "
1694
                 " WHERE energy_storage_container_id = %s "
1695
                 " ORDER BY name ")
1696
        cursor.execute(query, (id_,))
1697
        rows = cursor.fetchall()
1698
1699
        result = list()
1700
        if rows is not None and len(rows) > 0:
1701
            for row in rows:
1702
                meta_result = {"id": row[0],
1703
                               "name": row[1],
1704
                               "uuid": row[2]
1705
                               }
1706
                result.append(meta_result)
1707
1708
        resp.text = json.dumps(result)
1709
1710
    @staticmethod
1711
    @user_logger
1712
    def on_post(req, resp, id_):
1713
        """Handles POST requests"""
1714
        admin_control(req)
1715
        try:
1716
            raw_json = req.stream.read().decode('utf-8')
1717
        except Exception as ex:
1718
            raise falcon.HTTPError(status=falcon.HTTP_400,
1719
                                   title='API.BAD_REQUEST',
1720
                                   description='API.FAILED_TO_READ_REQUEST_STREAM')
1721
        if not id_.isdigit() or int(id_) <= 0:
1722
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1723
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
1724
1725
        cnx = mysql.connector.connect(**config.myems_system_db)
1726
        cursor = cnx.cursor()
1727
1728
        cursor.execute(" SELECT name "
1729
                       " FROM tbl_energy_storage_containers "
1730
                       " WHERE id = %s ", (id_,))
1731
        if cursor.fetchone() is None:
1732
            cursor.close()
1733
            cnx.close()
1734
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
1735
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
1736
1737
        new_values = json.loads(raw_json)
1738
1739
        if 'name' not in new_values['data'].keys() or \
1740
                not isinstance(new_values['data']['name'], str) or \
1741
                len(str.strip(new_values['data']['name'])) == 0:
1742
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1743
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_DCDC_NAME')
1744
        name = str.strip(new_values['data']['name'])
1745
1746
        cnx = mysql.connector.connect(**config.myems_system_db)
1747
        cursor = cnx.cursor()
1748
1749
        cursor.execute(" SELECT name "
1750
                       " FROM tbl_energy_storage_containers "
1751
                       " WHERE id = %s ",
1752
                       (id_,))
1753
        if cursor.fetchone() is None:
1754
            cursor.close()
1755
            cnx.close()
1756
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
1757
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
1758
1759
        cursor.execute(" SELECT name "
1760
                       " FROM tbl_energy_storage_containers_dcdcs "
1761
                       " WHERE energy_storage_container_id = %s AND name = %s ",
1762
                       (id_, name,))
1763
        if cursor.fetchone() is not None:
1764
            cursor.close()
1765
            cnx.close()
1766
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1767
                                   description='API.ENERGY_STORAGE_CONTAINER_DCDC_NAME_IS_ALREADY_IN_USE')
1768
1769
        add_values = (" INSERT INTO tbl_energy_storage_containers_dcdcs "
1770
                      "    (name, uuid, energy_storage_container_id) "
1771
                      " VALUES (%s, %s, %s) ")
1772
        cursor.execute(add_values, (name,
1773
                                    str(uuid.uuid4()),
1774
                                    id_
1775
                                    ))
1776
        new_id = cursor.lastrowid
1777
        cnx.commit()
1778
        cursor.close()
1779
        cnx.close()
1780
1781
        resp.status = falcon.HTTP_201
1782
        resp.location = '/energystoragecontainers/' + str(id_) + '/dcdcs/' + str(new_id)
1783
1784
1785
class EnergyStorageContainerDCDCItem:
@@ 3286-3404 (lines=119) @@
3283
        resp.status = falcon.HTTP_204
3284
3285
3286
class EnergyStorageContainerHVACCollection:
3287
    def __init__(self):
3288
        """Initializes Class"""
3289
        pass
3290
3291
    @staticmethod
3292
    def on_options(req, resp, id_):
3293
        resp.status = falcon.HTTP_200
3294
3295
    @staticmethod
3296
    def on_get(req, resp, id_):
3297
        access_control(req)
3298
        if not id_.isdigit() or int(id_) <= 0:
3299
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
3300
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
3301
3302
        cnx = mysql.connector.connect(**config.myems_system_db)
3303
        cursor = cnx.cursor()
3304
3305
        cursor.execute(" SELECT name "
3306
                       " FROM tbl_energy_storage_containers "
3307
                       " WHERE id = %s ", (id_,))
3308
        if cursor.fetchone() is None:
3309
            cursor.close()
3310
            cnx.close()
3311
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
3312
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
3313
3314
        query = (" SELECT id, name, uuid "
3315
                 " FROM tbl_energy_storage_containers_hvacs "
3316
                 " WHERE energy_storage_container_id = %s "
3317
                 " ORDER BY name ")
3318
        cursor.execute(query, (id_,))
3319
        rows = cursor.fetchall()
3320
3321
        result = list()
3322
        if rows is not None and len(rows) > 0:
3323
            for row in rows:
3324
                meta_result = {"id": row[0],
3325
                               "name": row[1],
3326
                               "uuid": row[2]
3327
                               }
3328
                result.append(meta_result)
3329
3330
        resp.text = json.dumps(result)
3331
3332
    @staticmethod
3333
    @user_logger
3334
    def on_post(req, resp, id_):
3335
        """Handles POST requests"""
3336
        admin_control(req)
3337
        try:
3338
            raw_json = req.stream.read().decode('utf-8')
3339
        except Exception as ex:
3340
            raise falcon.HTTPError(status=falcon.HTTP_400,
3341
                                   title='API.BAD_REQUEST',
3342
                                   description='API.FAILED_TO_READ_REQUEST_STREAM')
3343
        if not id_.isdigit() or int(id_) <= 0:
3344
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
3345
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
3346
3347
        cnx = mysql.connector.connect(**config.myems_system_db)
3348
        cursor = cnx.cursor()
3349
3350
        cursor.execute(" SELECT name "
3351
                       " FROM tbl_energy_storage_containers "
3352
                       " WHERE id = %s ", (id_,))
3353
        if cursor.fetchone() is None:
3354
            cursor.close()
3355
            cnx.close()
3356
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
3357
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
3358
3359
        new_values = json.loads(raw_json)
3360
3361
        if 'name' not in new_values['data'].keys() or \
3362
                not isinstance(new_values['data']['name'], str) or \
3363
                len(str.strip(new_values['data']['name'])) == 0:
3364
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
3365
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_HVAC_NAME')
3366
        name = str.strip(new_values['data']['name'])
3367
3368
        cnx = mysql.connector.connect(**config.myems_system_db)
3369
        cursor = cnx.cursor()
3370
3371
        cursor.execute(" SELECT name "
3372
                       " FROM tbl_energy_storage_containers "
3373
                       " WHERE id = %s ",
3374
                       (id_,))
3375
        if cursor.fetchone() is None:
3376
            cursor.close()
3377
            cnx.close()
3378
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
3379
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
3380
3381
        cursor.execute(" SELECT name "
3382
                       " FROM tbl_energy_storage_containers_hvacs "
3383
                       " WHERE energy_storage_container_id = %s AND name = %s ",
3384
                       (id_, name,))
3385
        if cursor.fetchone() is not None:
3386
            cursor.close()
3387
            cnx.close()
3388
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
3389
                                   description='API.ENERGY_STORAGE_CONTAINER_HVAC_NAME_IS_ALREADY_IN_USE')
3390
3391
        add_values = (" INSERT INTO tbl_energy_storage_containers_hvacs "
3392
                      "    (name, uuid, energy_storage_container_id) "
3393
                      " VALUES (%s, %s, %s) ")
3394
        cursor.execute(add_values, (name,
3395
                                    str(uuid.uuid4()),
3396
                                    id_
3397
                                    ))
3398
        new_id = cursor.lastrowid
3399
        cnx.commit()
3400
        cursor.close()
3401
        cnx.close()
3402
3403
        resp.status = falcon.HTTP_201
3404
        resp.location = '/energystoragecontainers/' + str(id_) + '/hvacs/' + str(new_id)
3405
3406
3407
class EnergyStorageContainerHVACItem:
@@ 2143-2261 (lines=119) @@
2140
        resp.status = falcon.HTTP_204
2141
2142
2143
class EnergyStorageContainerFirecontrolCollection:
2144
    def __init__(self):
2145
        """Initializes Class"""
2146
        pass
2147
2148
    @staticmethod
2149
    def on_options(req, resp, id_):
2150
        resp.status = falcon.HTTP_200
2151
2152
    @staticmethod
2153
    def on_get(req, resp, id_):
2154
        access_control(req)
2155
        if not id_.isdigit() or int(id_) <= 0:
2156
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
2157
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
2158
2159
        cnx = mysql.connector.connect(**config.myems_system_db)
2160
        cursor = cnx.cursor()
2161
2162
        cursor.execute(" SELECT name "
2163
                       " FROM tbl_energy_storage_containers "
2164
                       " WHERE id = %s ", (id_,))
2165
        if cursor.fetchone() is None:
2166
            cursor.close()
2167
            cnx.close()
2168
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
2169
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
2170
2171
        query = (" SELECT id, name, uuid "
2172
                 " FROM tbl_energy_storage_containers_firecontrols "
2173
                 " WHERE energy_storage_container_id = %s "
2174
                 " ORDER BY name ")
2175
        cursor.execute(query, (id_,))
2176
        rows = cursor.fetchall()
2177
2178
        result = list()
2179
        if rows is not None and len(rows) > 0:
2180
            for row in rows:
2181
                meta_result = {"id": row[0],
2182
                               "name": row[1],
2183
                               "uuid": row[2]
2184
                               }
2185
                result.append(meta_result)
2186
2187
        resp.text = json.dumps(result)
2188
2189
    @staticmethod
2190
    @user_logger
2191
    def on_post(req, resp, id_):
2192
        """Handles POST requests"""
2193
        admin_control(req)
2194
        try:
2195
            raw_json = req.stream.read().decode('utf-8')
2196
        except Exception as ex:
2197
            raise falcon.HTTPError(status=falcon.HTTP_400,
2198
                                   title='API.BAD_REQUEST',
2199
                                   description='API.FAILED_TO_READ_REQUEST_STREAM')
2200
        if not id_.isdigit() or int(id_) <= 0:
2201
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
2202
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_ID')
2203
2204
        cnx = mysql.connector.connect(**config.myems_system_db)
2205
        cursor = cnx.cursor()
2206
2207
        cursor.execute(" SELECT name "
2208
                       " FROM tbl_energy_storage_containers "
2209
                       " WHERE id = %s ", (id_,))
2210
        if cursor.fetchone() is None:
2211
            cursor.close()
2212
            cnx.close()
2213
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
2214
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
2215
2216
        new_values = json.loads(raw_json)
2217
2218
        if 'name' not in new_values['data'].keys() or \
2219
                not isinstance(new_values['data']['name'], str) or \
2220
                len(str.strip(new_values['data']['name'])) == 0:
2221
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
2222
                                   description='API.INVALID_ENERGY_STORAGE_CONTAINER_FIRECONTROL_NAME')
2223
        name = str.strip(new_values['data']['name'])
2224
2225
        cnx = mysql.connector.connect(**config.myems_system_db)
2226
        cursor = cnx.cursor()
2227
2228
        cursor.execute(" SELECT name "
2229
                       " FROM tbl_energy_storage_containers "
2230
                       " WHERE id = %s ",
2231
                       (id_,))
2232
        if cursor.fetchone() is None:
2233
            cursor.close()
2234
            cnx.close()
2235
            raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
2236
                                   description='API.ENERGY_STORAGE_CONTAINER_NOT_FOUND')
2237
2238
        cursor.execute(" SELECT name "
2239
                       " FROM tbl_energy_storage_containers_firecontrols "
2240
                       " WHERE energy_storage_container_id = %s AND name = %s ",
2241
                       (id_, name,))
2242
        if cursor.fetchone() is not None:
2243
            cursor.close()
2244
            cnx.close()
2245
            raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
2246
                                   description='API.ENERGY_STORAGE_CONTAINER_FIRECONTROL_NAME_IS_ALREADY_IN_USE')
2247
2248
        add_values = (" INSERT INTO tbl_energy_storage_containers_firecontrols "
2249
                      "    (name, uuid, energy_storage_container_id) "
2250
                      " VALUES (%s, %s, %s) ")
2251
        cursor.execute(add_values, (name,
2252
                                    str(uuid.uuid4()),
2253
                                    id_
2254
                                    ))
2255
        new_id = cursor.lastrowid
2256
        cnx.commit()
2257
        cursor.close()
2258
        cnx.close()
2259
2260
        resp.status = falcon.HTTP_201
2261
        resp.location = '/energystoragecontainers/' + str(id_) + '/firecontrols/' + str(new_id)
2262
2263
2264
class EnergyStorageContainerFirecontrolItem: