Code Duplication    Length = 50-50 lines in 2 locations

core/virtualmeter.py 2 locations

@@ 446-495 (lines=50) @@
443
        cursor.execute(query_expression, (id_,))
444
        row_expression = cursor.fetchone()
445
446
        if row_expression is not None:
447
            expression = {'id': row_expression['id'],
448
                          'uuid': row_expression['uuid'],
449
                          'equation': row_expression['equation'],
450
                          'variables': []}
451
452
            query_variables = (" SELECT v.id, v.name, v.meter_type, v.meter_id "
453
                               " FROM tbl_expressions e, tbl_variables v "
454
                               " WHERE e.id = %s AND v.expression_id = e.id "
455
                               " ORDER BY v.name ")
456
            cursor.execute(query_variables, (row_expression['id'],))
457
            rows_variables = cursor.fetchall()
458
            if rows_variables is not None:
459
                for row_variable in rows_variables:
460
                    if row_variable['meter_type'].lower() == 'meter':
461
                        query_meter = (" SELECT m.name "
462
                                       " FROM tbl_meters m "
463
                                       " WHERE m.id = %s ")
464
                        cursor.execute(query_meter, (row_variable['meter_id'],))
465
                        row_meter = cursor.fetchone()
466
                        if row_meter is not None:
467
                            expression['variables'].append({'id': row_variable['id'],
468
                                                            'name': row_variable['name'],
469
                                                            'meter_type': row_variable['meter_type'],
470
                                                            'meter_id': row_variable['meter_id'],
471
                                                            'meter_name': row_meter['name']})
472
                    elif row_variable['meter_type'].lower() == 'offline_meter':
473
                        query_meter = (" SELECT m.name "
474
                                       " FROM tbl_offline_meters m "
475
                                       " WHERE m.id = %s ")
476
                        cursor.execute(query_meter, (row_variable['meter_id'],))
477
                        row_meter = cursor.fetchone()
478
                        if row_meter is not None:
479
                            expression['variables'].append({'id': row_variable['id'],
480
                                                            'name': row_variable['name'],
481
                                                            'meter_type': row_variable['meter_type'],
482
                                                            'meter_id': row_variable['meter_id'],
483
                                                            'meter_name': row_meter['name']})
484
                    elif row_variable['meter_type'].lower() == 'virtual_meter':
485
                        query_meter = (" SELECT m.name "
486
                                       " FROM tbl_virtual_meters m "
487
                                       " WHERE m.id = %s ")
488
                        cursor.execute(query_meter, (row_variable['meter_id'],))
489
                        row_meter = cursor.fetchone()
490
                        if row_meter is not None:
491
                            expression['variables'].append({'id': row_variable['id'],
492
                                                            'name': row_variable['name'],
493
                                                            'meter_type': row_variable['meter_type'],
494
                                                            'meter_id': row_variable['meter_id'],
495
                                                            'meter_name': row_meter['name']})
496
497
        meta_result['expression'] = expression
498
@@ 88-137 (lines=50) @@
85
                cursor.execute(query_expression, (row['id'],))
86
                row_expression = cursor.fetchone()
87
88
                if row_expression is not None:
89
                    expression = {'id': row_expression['id'],
90
                                  'uuid': row_expression['uuid'],
91
                                  'equation': row_expression['equation'],
92
                                  'variables': []}
93
94
                    query_variables = (" SELECT v.id, v.name, v.meter_type, v.meter_id "
95
                                       " FROM tbl_expressions e, tbl_variables v "
96
                                       " WHERE e.id = %s AND v.expression_id = e.id "
97
                                       " ORDER BY v.name ")
98
                    cursor.execute(query_variables, (row_expression['id'],))
99
                    rows_variables = cursor.fetchall()
100
                    if rows_variables is not None:
101
                        for row_variable in rows_variables:
102
                            if row_variable['meter_type'].lower() == 'meter':
103
                                query_meter = (" SELECT m.name "
104
                                               " FROM tbl_meters m "
105
                                               " WHERE m.id = %s ")
106
                                cursor.execute(query_meter, (row_variable['meter_id'],))
107
                                row_meter = cursor.fetchone()
108
                                if row_meter is not None:
109
                                    expression['variables'].append({'id': row_variable['id'],
110
                                                                    'name': row_variable['name'],
111
                                                                    'meter_type': row_variable['meter_type'],
112
                                                                    'meter_id': row_variable['meter_id'],
113
                                                                    'meter_name': row_meter['name']})
114
                            elif row_variable['meter_type'].lower() == 'offline_meter':
115
                                query_meter = (" SELECT m.name "
116
                                               " FROM tbl_offline_meters m "
117
                                               " WHERE m.id = %s ")
118
                                cursor.execute(query_meter, (row_variable['meter_id'],))
119
                                row_meter = cursor.fetchone()
120
                                if row_meter is not None:
121
                                    expression['variables'].append({'id': row_variable['id'],
122
                                                                    'name': row_variable['name'],
123
                                                                    'meter_type': row_variable['meter_type'],
124
                                                                    'meter_id': row_variable['meter_id'],
125
                                                                    'meter_name': row_meter['name']})
126
                            elif row_variable['meter_type'].lower() == 'virtual_meter':
127
                                query_meter = (" SELECT m.name "
128
                                               " FROM tbl_virtual_meters m "
129
                                               " WHERE m.id = %s ")
130
                                cursor.execute(query_meter, (row_variable['meter_id'],))
131
                                row_meter = cursor.fetchone()
132
                                if row_meter is not None:
133
                                    expression['variables'].append({'id': row_variable['id'],
134
                                                                    'name': row_variable['name'],
135
                                                                    'meter_type': row_variable['meter_type'],
136
                                                                    'meter_id': row_variable['meter_id'],
137
                                                                    'meter_name': row_meter['name']})
138
139
                meta_result['expression'] = expression
140
                result.append(meta_result)