Code Duplication    Length = 59-60 lines in 3 locations

reports/spaceenergyitem.py 1 location

@@ 313-372 (lines=60) @@
310
        # Step 8: query reporting period energy input
311
        ################################################################################################################
312
        reporting = dict()
313
        if energy_item_set is not None and len(energy_item_set) > 0:
314
            for energy_item_id in energy_item_set:
315
                reporting[energy_item_id] = dict()
316
                reporting[energy_item_id]['timestamps'] = list()
317
                reporting[energy_item_id]['values'] = list()
318
                reporting[energy_item_id]['subtotal'] = Decimal(0.0)
319
                reporting[energy_item_id]['toppeak'] = Decimal(0.0)
320
                reporting[energy_item_id]['onpeak'] = Decimal(0.0)
321
                reporting[energy_item_id]['midpeak'] = Decimal(0.0)
322
                reporting[energy_item_id]['offpeak'] = Decimal(0.0)
323
324
                cursor_energy.execute(" SELECT start_datetime_utc, actual_value "
325
                                      " FROM tbl_space_input_item_hourly "
326
                                      " WHERE space_id = %s "
327
                                      "     AND energy_item_id = %s "
328
                                      "     AND start_datetime_utc >= %s "
329
                                      "     AND start_datetime_utc < %s "
330
                                      " ORDER BY start_datetime_utc ",
331
                                      (space['id'],
332
                                       energy_item_id,
333
                                       reporting_start_datetime_utc,
334
                                       reporting_end_datetime_utc))
335
                rows_space_hourly = cursor_energy.fetchall()
336
337
                rows_space_periodically = utilities.aggregate_hourly_data_by_period(rows_space_hourly,
338
                                                                                    reporting_start_datetime_utc,
339
                                                                                    reporting_end_datetime_utc,
340
                                                                                    period_type)
341
                for row_space_periodically in rows_space_periodically:
342
                    current_datetime_local = row_space_periodically[0].replace(tzinfo=timezone.utc) + \
343
                                             timedelta(minutes=timezone_offset)
344
                    if period_type == 'hourly':
345
                        current_datetime = current_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
346
                    elif period_type == 'daily':
347
                        current_datetime = current_datetime_local.strftime('%Y-%m-%d')
348
                    elif period_type == 'monthly':
349
                        current_datetime = current_datetime_local.strftime('%Y-%m')
350
                    elif period_type == 'yearly':
351
                        current_datetime = current_datetime_local.strftime('%Y')
352
353
                    actual_value = Decimal(0.0) if row_space_periodically[1] is None else row_space_periodically[1]
354
                    reporting[energy_item_id]['timestamps'].append(current_datetime)
355
                    reporting[energy_item_id]['values'].append(actual_value)
356
                    reporting[energy_item_id]['subtotal'] += actual_value
357
358
                energy_category_tariff_dict = \
359
                    utilities.get_energy_category_peak_types(space['cost_center_id'],
360
                                                             energy_item_dict[energy_item_id]['energy_category_id'],
361
                                                             reporting_start_datetime_utc,
362
                                                             reporting_end_datetime_utc)
363
                for row in rows_space_hourly:
364
                    peak_type = energy_category_tariff_dict.get(row[0], None)
365
                    if peak_type == 'toppeak':
366
                        reporting[energy_item_id]['toppeak'] += row[1]
367
                    elif peak_type == 'onpeak':
368
                        reporting[energy_item_id]['onpeak'] += row[1]
369
                    elif peak_type == 'midpeak':
370
                        reporting[energy_item_id]['midpeak'] += row[1]
371
                    elif peak_type == 'offpeak':
372
                        reporting[energy_item_id]['offpeak'] += row[1]
373
374
        ################################################################################################################
375
        # Step 9: query tariff data

reports/spacecost.py 1 location

@@ 309-367 (lines=59) @@
306
        # Step 8: query reporting period energy cost
307
        ################################################################################################################
308
        reporting = dict()
309
        if energy_category_set is not None and len(energy_category_set) > 0:
310
            for energy_category_id in energy_category_set:
311
                reporting[energy_category_id] = dict()
312
                reporting[energy_category_id]['timestamps'] = list()
313
                reporting[energy_category_id]['values'] = list()
314
                reporting[energy_category_id]['subtotal'] = Decimal(0.0)
315
                reporting[energy_category_id]['toppeak'] = Decimal(0.0)
316
                reporting[energy_category_id]['onpeak'] = Decimal(0.0)
317
                reporting[energy_category_id]['midpeak'] = Decimal(0.0)
318
                reporting[energy_category_id]['offpeak'] = Decimal(0.0)
319
320
                cursor_energy.execute(" SELECT start_datetime_utc, actual_value "
321
                                      " FROM tbl_space_input_category_hourly "
322
                                      " WHERE space_id = %s "
323
                                      "     AND energy_category_id = %s "
324
                                      "     AND start_datetime_utc >= %s "
325
                                      "     AND start_datetime_utc < %s "
326
                                      " ORDER BY start_datetime_utc ",
327
                                      (space['id'],
328
                                       energy_category_id,
329
                                       reporting_start_datetime_utc,
330
                                       reporting_end_datetime_utc))
331
                rows_space_hourly = cursor_energy.fetchall()
332
333
                rows_space_periodically = utilities.aggregate_hourly_data_by_period(rows_space_hourly,
334
                                                                                    reporting_start_datetime_utc,
335
                                                                                    reporting_end_datetime_utc,
336
                                                                                    period_type)
337
                for row_space_periodically in rows_space_periodically:
338
                    current_datetime_local = row_space_periodically[0].replace(tzinfo=timezone.utc) + \
339
                                             timedelta(minutes=timezone_offset)
340
                    if period_type == 'hourly':
341
                        current_datetime = current_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
342
                    elif period_type == 'daily':
343
                        current_datetime = current_datetime_local.strftime('%Y-%m-%d')
344
                    elif period_type == 'monthly':
345
                        current_datetime = current_datetime_local.strftime('%Y-%m')
346
                    elif period_type == 'yearly':
347
                        current_datetime = current_datetime_local.strftime('%Y')
348
349
                    actual_value = Decimal(0.0) if row_space_periodically[1] is None else row_space_periodically[1]
350
                    reporting[energy_category_id]['timestamps'].append(current_datetime)
351
                    reporting[energy_category_id]['values'].append(actual_value)
352
                    reporting[energy_category_id]['subtotal'] += actual_value
353
354
                energy_category_tariff_dict = utilities.get_energy_category_peak_types(space['cost_center_id'],
355
                                                                                       energy_category_id,
356
                                                                                       reporting_start_datetime_utc,
357
                                                                                       reporting_end_datetime_utc)
358
                for row in rows_space_hourly:
359
                    peak_type = energy_category_tariff_dict.get(row[0], None)
360
                    if peak_type == 'toppeak':
361
                        reporting[energy_category_id]['toppeak'] += row[1]
362
                    elif peak_type == 'onpeak':
363
                        reporting[energy_category_id]['onpeak'] += row[1]
364
                    elif peak_type == 'midpeak':
365
                        reporting[energy_category_id]['midpeak'] += row[1]
366
                    elif peak_type == 'offpeak':
367
                        reporting[energy_category_id]['offpeak'] += row[1]
368
369
        ################################################################################################################
370
        # Step 9: query tariff data

reports/dashboard.py 1 location

@@ 478-537 (lines=60) @@
475
        # Step 10: query reporting period energy cost
476
        ################################################################################################################
477
        reporting_cost = dict()
478
        if energy_category_set is not None and len(energy_category_set) > 0:
479
            for energy_category_id in energy_category_set:
480
481
                reporting_cost[energy_category_id] = dict()
482
                reporting_cost[energy_category_id]['timestamps'] = list()
483
                reporting_cost[energy_category_id]['values'] = list()
484
                reporting_cost[energy_category_id]['subtotal'] = Decimal(0.0)
485
                reporting_cost[energy_category_id]['toppeak'] = Decimal(0.0)
486
                reporting_cost[energy_category_id]['onpeak'] = Decimal(0.0)
487
                reporting_cost[energy_category_id]['midpeak'] = Decimal(0.0)
488
                reporting_cost[energy_category_id]['offpeak'] = Decimal(0.0)
489
490
                cursor_billing.execute(" SELECT start_datetime_utc, actual_value "
491
                                       " FROM tbl_space_input_category_hourly "
492
                                       " WHERE space_id = %s "
493
                                       "     AND energy_category_id = %s "
494
                                       "     AND start_datetime_utc >= %s "
495
                                       "     AND start_datetime_utc < %s "
496
                                       " ORDER BY start_datetime_utc ",
497
                                       (space['id'],
498
                                        energy_category_id,
499
                                        reporting_start_datetime_utc,
500
                                        reporting_end_datetime_utc))
501
                rows_space_hourly = cursor_billing.fetchall()
502
503
                rows_space_periodically = utilities.aggregate_hourly_data_by_period(rows_space_hourly,
504
                                                                                    reporting_start_datetime_utc,
505
                                                                                    reporting_end_datetime_utc,
506
                                                                                    period_type)
507
                for row_space_periodically in rows_space_periodically:
508
                    current_datetime_local = row_space_periodically[0].replace(tzinfo=timezone.utc) + \
509
                                             timedelta(minutes=timezone_offset)
510
                    if period_type == 'hourly':
511
                        current_datetime = current_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
512
                    elif period_type == 'daily':
513
                        current_datetime = current_datetime_local.strftime('%Y-%m-%d')
514
                    elif period_type == 'monthly':
515
                        current_datetime = current_datetime_local.strftime('%Y-%m')
516
                    elif period_type == 'yearly':
517
                        current_datetime = current_datetime_local.strftime('%Y')
518
519
                    actual_value = Decimal(0.0) if row_space_periodically[1] is None else row_space_periodically[1]
520
                    reporting_cost[energy_category_id]['timestamps'].append(current_datetime)
521
                    reporting_cost[energy_category_id]['values'].append(actual_value)
522
                    reporting_cost[energy_category_id]['subtotal'] += actual_value
523
524
                energy_category_tariff_dict = utilities.get_energy_category_peak_types(space['cost_center_id'],
525
                                                                                       energy_category_id,
526
                                                                                       reporting_start_datetime_utc,
527
                                                                                       reporting_end_datetime_utc)
528
                for row in rows_space_hourly:
529
                    peak_type = energy_category_tariff_dict.get(row[0], None)
530
                    if peak_type == 'toppeak':
531
                        reporting_cost[energy_category_id]['toppeak'] += row[1]
532
                    elif peak_type == 'onpeak':
533
                        reporting_cost[energy_category_id]['onpeak'] += row[1]
534
                    elif peak_type == 'midpeak':
535
                        reporting_cost[energy_category_id]['midpeak'] += row[1]
536
                    elif peak_type == 'offpeak':
537
                        reporting_cost[energy_category_id]['offpeak'] += row[1]
538
        ################################################################################################################
539
        # Step 11: query tariff data
540
        ################################################################################################################