Code Duplication    Length = 66-66 lines in 2 locations

reports/dashboard.py 1 location

@@ 404-469 (lines=66) @@
401
        # Step 9: query reporting period energy input
402
        ################################################################################################################
403
        reporting_input = dict()
404
        if energy_category_set is not None and len(energy_category_set) > 0:
405
            for energy_category_id in energy_category_set:
406
                kgce = energy_category_dict[energy_category_id]['kgce']
407
                kgco2e = energy_category_dict[energy_category_id]['kgco2e']
408
409
                reporting_input[energy_category_id] = dict()
410
                reporting_input[energy_category_id]['timestamps'] = list()
411
                reporting_input[energy_category_id]['values'] = list()
412
                reporting_input[energy_category_id]['subtotal'] = Decimal(0.0)
413
                reporting_input[energy_category_id]['subtotal_in_kgce'] = Decimal(0.0)
414
                reporting_input[energy_category_id]['subtotal_in_kgco2e'] = Decimal(0.0)
415
                reporting_input[energy_category_id]['toppeak'] = Decimal(0.0)
416
                reporting_input[energy_category_id]['onpeak'] = Decimal(0.0)
417
                reporting_input[energy_category_id]['midpeak'] = Decimal(0.0)
418
                reporting_input[energy_category_id]['offpeak'] = Decimal(0.0)
419
420
                cursor_energy.execute(" SELECT start_datetime_utc, actual_value "
421
                                      " FROM tbl_space_input_category_hourly "
422
                                      " WHERE space_id = %s "
423
                                      "     AND energy_category_id = %s "
424
                                      "     AND start_datetime_utc >= %s "
425
                                      "     AND start_datetime_utc < %s "
426
                                      " ORDER BY start_datetime_utc ",
427
                                      (space['id'],
428
                                       energy_category_id,
429
                                       reporting_start_datetime_utc,
430
                                       reporting_end_datetime_utc))
431
                rows_space_hourly = cursor_energy.fetchall()
432
433
                rows_space_periodically = utilities.aggregate_hourly_data_by_period(rows_space_hourly,
434
                                                                                    reporting_start_datetime_utc,
435
                                                                                    reporting_end_datetime_utc,
436
                                                                                    period_type)
437
                for row_space_periodically in rows_space_periodically:
438
                    current_datetime_local = row_space_periodically[0].replace(tzinfo=timezone.utc) + \
439
                                             timedelta(minutes=timezone_offset)
440
                    if period_type == 'hourly':
441
                        current_datetime = current_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
442
                    elif period_type == 'daily':
443
                        current_datetime = current_datetime_local.strftime('%Y-%m-%d')
444
                    elif period_type == 'monthly':
445
                        current_datetime = current_datetime_local.strftime('%Y-%m')
446
                    elif period_type == 'yearly':
447
                        current_datetime = current_datetime_local.strftime('%Y')
448
449
                    actual_value = Decimal(0.0) if row_space_periodically[1] is None else row_space_periodically[1]
450
                    reporting_input[energy_category_id]['timestamps'].append(current_datetime)
451
                    reporting_input[energy_category_id]['values'].append(actual_value)
452
                    reporting_input[energy_category_id]['subtotal'] += actual_value
453
                    reporting_input[energy_category_id]['subtotal_in_kgce'] += actual_value * kgce
454
                    reporting_input[energy_category_id]['subtotal_in_kgco2e'] += actual_value * kgco2e
455
456
                energy_category_tariff_dict = utilities.get_energy_category_peak_types(space['cost_center_id'],
457
                                                                                       energy_category_id,
458
                                                                                       reporting_start_datetime_utc,
459
                                                                                       reporting_end_datetime_utc)
460
                for row in rows_space_hourly:
461
                    peak_type = energy_category_tariff_dict.get(row[0], None)
462
                    if peak_type == 'toppeak':
463
                        reporting_input[energy_category_id]['toppeak'] += row[1]
464
                    elif peak_type == 'onpeak':
465
                        reporting_input[energy_category_id]['onpeak'] += row[1]
466
                    elif peak_type == 'midpeak':
467
                        reporting_input[energy_category_id]['midpeak'] += row[1]
468
                    elif peak_type == 'offpeak':
469
                        reporting_input[energy_category_id]['offpeak'] += row[1]
470
471
        ################################################################################################################
472
        # Step 10: query reporting period energy cost

reports/spaceenergycategory.py 1 location

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