Code Duplication    Length = 59-59 lines in 3 locations

core/utilities.py 3 locations

@@ 737-795 (lines=59) @@
734
735
        while current_datetime_utc <= end_datetime_utc:
736
            # calculate the next datetime in utc
737
            if current_datetime_utc.month == 1:
738
                temp_day = 28
739
                ny = current_datetime_utc.year
740
                if (ny % 100 != 0 and ny % 4 == 0) or (ny % 100 == 0 and ny % 400 == 0):
741
                    temp_day = 29
742
743
                next_datetime_utc = datetime(year=current_datetime_utc.year,
744
                                             month=current_datetime_utc.month + 1,
745
                                             day=temp_day,
746
                                             hour=current_datetime_utc.hour,
747
                                             minute=current_datetime_utc.minute,
748
                                             second=0,
749
                                             microsecond=0,
750
                                             tzinfo=None)
751
            elif current_datetime_utc.month == 2:
752
                next_datetime_utc = datetime(year=current_datetime_utc.year,
753
                                             month=current_datetime_utc.month + 1,
754
                                             day=31,
755
                                             hour=current_datetime_utc.hour,
756
                                             minute=current_datetime_utc.minute,
757
                                             second=0,
758
                                             microsecond=0,
759
                                             tzinfo=None)
760
            elif current_datetime_utc.month in [3, 5, 8, 10]:
761
                next_datetime_utc = datetime(year=current_datetime_utc.year,
762
                                             month=current_datetime_utc.month + 1,
763
                                             day=30,
764
                                             hour=current_datetime_utc.hour,
765
                                             minute=current_datetime_utc.minute,
766
                                             second=0,
767
                                             microsecond=0,
768
                                             tzinfo=None)
769
            elif current_datetime_utc.month == 7:
770
                next_datetime_utc = datetime(year=current_datetime_utc.year,
771
                                             month=current_datetime_utc.month + 1,
772
                                             day=31,
773
                                             hour=current_datetime_utc.hour,
774
                                             minute=current_datetime_utc.minute,
775
                                             second=0,
776
                                             microsecond=0,
777
                                             tzinfo=None)
778
            elif current_datetime_utc.month in [4, 6, 9, 11]:
779
                next_datetime_utc = datetime(year=current_datetime_utc.year,
780
                                             month=current_datetime_utc.month + 1,
781
                                             day=31,
782
                                             hour=current_datetime_utc.hour,
783
                                             minute=current_datetime_utc.minute,
784
                                             second=0,
785
                                             microsecond=0,
786
                                             tzinfo=None)
787
            elif current_datetime_utc.month == 12:
788
                next_datetime_utc = datetime(year=current_datetime_utc.year + 1,
789
                                             month=1,
790
                                             day=31,
791
                                             hour=current_datetime_utc.hour,
792
                                             minute=current_datetime_utc.minute,
793
                                             second=0,
794
                                             microsecond=0,
795
                                             tzinfo=None)
796
797
            sub_total = Decimal(0.0)
798
            for row in rows_hourly:
@@ 478-536 (lines=59) @@
475
476
        while current_datetime_utc <= end_datetime_utc:
477
            # calculate the next datetime in utc
478
            if current_datetime_utc.month == 1:
479
                temp_day = 28
480
                ny = current_datetime_utc.year
481
                if (ny % 100 != 0 and ny % 4 == 0) or (ny % 100 == 0 and ny % 400 == 0):
482
                    temp_day = 29
483
484
                next_datetime_utc = datetime(year=current_datetime_utc.year,
485
                                             month=current_datetime_utc.month + 1,
486
                                             day=temp_day,
487
                                             hour=current_datetime_utc.hour,
488
                                             minute=current_datetime_utc.minute,
489
                                             second=0,
490
                                             microsecond=0,
491
                                             tzinfo=None)
492
            elif current_datetime_utc.month == 2:
493
                next_datetime_utc = datetime(year=current_datetime_utc.year,
494
                                             month=current_datetime_utc.month + 1,
495
                                             day=31,
496
                                             hour=current_datetime_utc.hour,
497
                                             minute=current_datetime_utc.minute,
498
                                             second=0,
499
                                             microsecond=0,
500
                                             tzinfo=None)
501
            elif current_datetime_utc.month in [3, 5, 8, 10]:
502
                next_datetime_utc = datetime(year=current_datetime_utc.year,
503
                                             month=current_datetime_utc.month + 1,
504
                                             day=30,
505
                                             hour=current_datetime_utc.hour,
506
                                             minute=current_datetime_utc.minute,
507
                                             second=0,
508
                                             microsecond=0,
509
                                             tzinfo=None)
510
            elif current_datetime_utc.month == 7:
511
                next_datetime_utc = datetime(year=current_datetime_utc.year,
512
                                             month=current_datetime_utc.month + 1,
513
                                             day=31,
514
                                             hour=current_datetime_utc.hour,
515
                                             minute=current_datetime_utc.minute,
516
                                             second=0,
517
                                             microsecond=0,
518
                                             tzinfo=None)
519
            elif current_datetime_utc.month in [4, 6, 9, 11]:
520
                next_datetime_utc = datetime(year=current_datetime_utc.year,
521
                                             month=current_datetime_utc.month + 1,
522
                                             day=31,
523
                                             hour=current_datetime_utc.hour,
524
                                             minute=current_datetime_utc.minute,
525
                                             second=0,
526
                                             microsecond=0,
527
                                             tzinfo=None)
528
            elif current_datetime_utc.month == 12:
529
                next_datetime_utc = datetime(year=current_datetime_utc.year + 1,
530
                                             month=1,
531
                                             day=31,
532
                                             hour=current_datetime_utc.hour,
533
                                             minute=current_datetime_utc.minute,
534
                                             second=0,
535
                                             microsecond=0,
536
                                             tzinfo=None)
537
538
            sub_total = Decimal(0.0)
539
            sub_maximum = None
@@ 66-124 (lines=59) @@
63
64
        while current_datetime_utc <= end_datetime_utc:
65
            # calculate the next datetime in utc
66
            if current_datetime_utc.month == 1:
67
                temp_day = 28
68
                ny = current_datetime_utc.year
69
                if (ny % 100 != 0 and ny % 4 == 0) or (ny % 100 == 0 and ny % 400 == 0):
70
                    temp_day = 29
71
72
                next_datetime_utc = datetime(year=current_datetime_utc.year,
73
                                             month=current_datetime_utc.month + 1,
74
                                             day=temp_day,
75
                                             hour=current_datetime_utc.hour,
76
                                             minute=current_datetime_utc.minute,
77
                                             second=0,
78
                                             microsecond=0,
79
                                             tzinfo=None)
80
            elif current_datetime_utc.month == 2:
81
                next_datetime_utc = datetime(year=current_datetime_utc.year,
82
                                             month=current_datetime_utc.month + 1,
83
                                             day=31,
84
                                             hour=current_datetime_utc.hour,
85
                                             minute=current_datetime_utc.minute,
86
                                             second=0,
87
                                             microsecond=0,
88
                                             tzinfo=None)
89
            elif current_datetime_utc.month in [3, 5, 8, 10]:
90
                next_datetime_utc = datetime(year=current_datetime_utc.year,
91
                                             month=current_datetime_utc.month + 1,
92
                                             day=30,
93
                                             hour=current_datetime_utc.hour,
94
                                             minute=current_datetime_utc.minute,
95
                                             second=0,
96
                                             microsecond=0,
97
                                             tzinfo=None)
98
            elif current_datetime_utc.month == 7:
99
                next_datetime_utc = datetime(year=current_datetime_utc.year,
100
                                             month=current_datetime_utc.month + 1,
101
                                             day=31,
102
                                             hour=current_datetime_utc.hour,
103
                                             minute=current_datetime_utc.minute,
104
                                             second=0,
105
                                             microsecond=0,
106
                                             tzinfo=None)
107
            elif current_datetime_utc.month in [4, 6, 9, 11]:
108
                next_datetime_utc = datetime(year=current_datetime_utc.year,
109
                                             month=current_datetime_utc.month + 1,
110
                                             day=31,
111
                                             hour=current_datetime_utc.hour,
112
                                             minute=current_datetime_utc.minute,
113
                                             second=0,
114
                                             microsecond=0,
115
                                             tzinfo=None)
116
            elif current_datetime_utc.month == 12:
117
                next_datetime_utc = datetime(year=current_datetime_utc.year + 1,
118
                                             month=1,
119
                                             day=31,
120
                                             hour=current_datetime_utc.hour,
121
                                             minute=current_datetime_utc.minute,
122
                                             second=0,
123
                                             microsecond=0,
124
                                             tzinfo=None)
125
126
            subtotal = Decimal(0.0)
127
            for row in rows_hourly: