Code Duplication    Length = 75-79 lines in 2 locations

myems-api/core/equipment.py 2 locations

@@ 1260-1338 (lines=79) @@
1257
                                   description='API.EQUIPMENT_PARAMETER_NAME_IS_ALREADY_IN_USE')
1258
1259
        # validate by parameter type
1260
        if parameter_type == 'point':
1261
            if point_id is None:
1262
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1263
                                       description='API.INVALID_POINT_ID')
1264
1265
            query = (" SELECT id, name "
1266
                     " FROM tbl_points "
1267
                     " WHERE id = %s ")
1268
            cursor.execute(query, (point_id, ))
1269
            row = cursor.fetchone()
1270
            if row is None:
1271
                cursor.close()
1272
                cnx.close()
1273
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1274
                                       description='API.POINT_NOT_FOUND')
1275
1276
        elif parameter_type == 'constant':
1277
            if constant is None:
1278
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1279
                                       description='API.INVALID_CONSTANT_VALUE')
1280
1281
        elif parameter_type == 'fraction':
1282
1283
            query = (" SELECT id, name, uuid "
1284
                     " FROM tbl_meters ")
1285
            cursor.execute(query)
1286
            rows_meters = cursor.fetchall()
1287
1288
            meter_dict = dict()
1289
            if rows_meters is not None and len(rows_meters) > 0:
1290
                for row in rows_meters:
1291
                    meter_dict[row[2]] = {"type": 'meter',
1292
                                          "id": row[0],
1293
                                          "name": row[1],
1294
                                          "uuid": row[2]}
1295
1296
            query = (" SELECT id, name, uuid "
1297
                     " FROM tbl_offline_meters ")
1298
            cursor.execute(query)
1299
            rows_offline_meters = cursor.fetchall()
1300
1301
            offline_meter_dict = dict()
1302
            if rows_offline_meters is not None and len(rows_offline_meters) > 0:
1303
                for row in rows_offline_meters:
1304
                    offline_meter_dict[row[2]] = {"type": 'offline_meter',
1305
                                                  "id": row[0],
1306
                                                  "name": row[1],
1307
                                                  "uuid": row[2]}
1308
1309
            query = (" SELECT id, name, uuid "
1310
                     " FROM tbl_virtual_meters ")
1311
            cursor.execute(query)
1312
            rows_virtual_meters = cursor.fetchall()
1313
1314
            virtual_meter_dict = dict()
1315
            if rows_virtual_meters is not None and len(rows_virtual_meters) > 0:
1316
                for row in rows_virtual_meters:
1317
                    virtual_meter_dict[row[2]] = {"type": 'virtual_meter',
1318
                                                  "id": row[0],
1319
                                                  "name": row[1],
1320
                                                  "uuid": row[2]}
1321
1322
            # validate numerator meter uuid
1323
            if meter_dict.get(numerator_meter_uuid) is None and \
1324
                    virtual_meter_dict.get(numerator_meter_uuid) is None and \
1325
                    offline_meter_dict.get(numerator_meter_uuid) is None:
1326
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1327
                                       description='API.INVALID_NUMERATOR_METER_UUID')
1328
1329
            # validate denominator meter uuid
1330
            if denominator_meter_uuid == numerator_meter_uuid:
1331
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1332
                                       description='API.INVALID_DENOMINATOR_METER_UUID')
1333
1334
            if denominator_meter_uuid not in meter_dict and \
1335
                    denominator_meter_uuid not in virtual_meter_dict and \
1336
                    denominator_meter_uuid not in offline_meter_dict:
1337
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
1338
                                       description='API.INVALID_DENOMINATOR_METER_UUID')
1339
1340
        add_values = (" UPDATE tbl_equipments_parameters "
1341
                      " SET name = %s , parameter_type = %s, constant = %s, "
@@ 875-949 (lines=75) @@
872
                                   description='API.EQUIPMENT_PARAMETER_NAME_IS_ALREADY_IN_USE')
873
874
        # validate by parameter type
875
        if parameter_type == 'point':
876
            if point_id is None:
877
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
878
                                       description='API.INVALID_POINT_ID')
879
            query = (" SELECT id, name "
880
                     " FROM tbl_points "
881
                     " WHERE id = %s ")
882
            cursor.execute(query, (point_id, ))
883
            if cursor.fetchone() is None:
884
                cursor.close()
885
                cnx.close()
886
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
887
                                       description='API.POINT_NOT_FOUND')
888
889
        elif parameter_type == 'constant':
890
            if constant is None:
891
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
892
                                       description='API.INVALID_CONSTANT_VALUE')
893
894
        elif parameter_type == 'fraction':
895
            query = (" SELECT id, name, uuid "
896
                     " FROM tbl_meters ")
897
            cursor.execute(query)
898
            rows_meters = cursor.fetchall()
899
            meter_dict = dict()
900
            if rows_meters is not None and len(rows_meters) > 0:
901
                for row in rows_meters:
902
                    meter_dict[row[2]] = {"type": 'meter',
903
                                          "id": row[0],
904
                                          "name": row[1],
905
                                          "uuid": row[2]}
906
907
            query = (" SELECT id, name, uuid "
908
                     " FROM tbl_offline_meters ")
909
            cursor.execute(query)
910
            rows_offline_meters = cursor.fetchall()
911
912
            offline_meter_dict = dict()
913
            if rows_offline_meters is not None and len(rows_offline_meters) > 0:
914
                for row in rows_offline_meters:
915
                    offline_meter_dict[row[2]] = {"type": 'offline_meter',
916
                                                  "id": row[0],
917
                                                  "name": row[1],
918
                                                  "uuid": row[2]}
919
920
            query = (" SELECT id, name, uuid "
921
                     " FROM tbl_virtual_meters ")
922
            cursor.execute(query)
923
            rows_virtual_meters = cursor.fetchall()
924
925
            virtual_meter_dict = dict()
926
            if rows_virtual_meters is not None and len(rows_virtual_meters) > 0:
927
                for row in rows_virtual_meters:
928
                    virtual_meter_dict[row[2]] = {"type": 'virtual_meter',
929
                                                  "id": row[0],
930
                                                  "name": row[1],
931
                                                  "uuid": row[2]}
932
933
            # validate numerator meter uuid
934
            if meter_dict.get(numerator_meter_uuid) is None and \
935
                    virtual_meter_dict.get(numerator_meter_uuid) is None and \
936
                    offline_meter_dict.get(numerator_meter_uuid) is None:
937
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
938
                                       description='API.INVALID_NUMERATOR_METER_UUID')
939
940
            # validate denominator meter uuid
941
            if denominator_meter_uuid == numerator_meter_uuid:
942
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
943
                                       description='API.INVALID_DENOMINATOR_METER_UUID')
944
945
            if denominator_meter_uuid not in meter_dict and \
946
                    denominator_meter_uuid not in virtual_meter_dict and \
947
                    denominator_meter_uuid not in offline_meter_dict:
948
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
949
                                       description='API.INVALID_DENOMINATOR_METER_UUID')
950
951
        add_values = (" INSERT INTO tbl_equipments_parameters "
952
                      "    (equipment_id, name, parameter_type, constant, "