Code Duplication    Length = 66-66 lines in 3 locations

reports/dashboard.py 1 location

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

reports/tenantenergycategory.py 1 location

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