Code Duplication    Length = 20-22 lines in 2 locations

core/utilities.py 2 locations

@@ 643-664 (lines=22) @@
640
        stdev = None
641
        variance = None
642
        current_datetime_utc = start_datetime_utc.replace(minute=0, second=0, microsecond=0, tzinfo=None)
643
        while current_datetime_utc <= end_datetime_utc:
644
            sub_total = Decimal(0.0)
645
            for row in rows_hourly:
646
                if current_datetime_utc <= row[0] < current_datetime_utc + \
647
                        timedelta(minutes=config.minutes_to_count):
648
                    sub_total += row[1]
649
650
            result_rows_hourly.append((current_datetime_utc, sub_total))
651
            sample_data.append(sub_total)
652
653
            counter += 1
654
            if minimum is None:
655
                minimum = sub_total
656
            elif minimum > sub_total:
657
                minimum = sub_total
658
659
            if maximum is None:
660
                maximum = sub_total
661
            elif maximum < sub_total:
662
                maximum = sub_total
663
664
            current_datetime_utc += timedelta(minutes=config.minutes_to_count)
665
666
        if len(sample_data) > 1:
667
            mean = statistics.mean(sample_data)
@@ 689-708 (lines=20) @@
686
        # calculate the start datetime in utc of the first day in local
687
        start_datetime_local = start_datetime_utc + timedelta(hours=int(config.utc_offset[1:3]))
688
        current_datetime_utc = start_datetime_local.replace(hour=0) - timedelta(hours=int(config.utc_offset[1:3]))
689
        while current_datetime_utc <= end_datetime_utc:
690
            sub_total = Decimal(0.0)
691
            for row in rows_hourly:
692
                if current_datetime_utc <= row[0] < current_datetime_utc + timedelta(days=1):
693
                    sub_total += row[1]
694
695
            result_rows_daily.append((current_datetime_utc, sub_total))
696
            sample_data.append(sub_total)
697
698
            counter += 1
699
            if minimum is None:
700
                minimum = sub_total
701
            elif minimum > sub_total:
702
                minimum = sub_total
703
704
            if maximum is None:
705
                maximum = sub_total
706
            elif maximum < sub_total:
707
                maximum = sub_total
708
            current_datetime_utc += timedelta(days=1)
709
710
        if len(sample_data) > 1:
711
            mean = statistics.mean(sample_data)