Skip to content

Commit 85ee35f

Browse files
committed
fix: add function to cut off time-entries that partially belongs to a range
1 parent e0cbe9f commit 85ee35f

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

utils/worked_time.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,37 @@ def filter_time_entries(time_entries, dr: DateRange):
8989
return result
9090

9191

92+
def cut_time_entries_out_of_range(time_entries, dr):
93+
start, end = dr.start(), dr.end()
94+
for t in time_entries:
95+
te_start, te_end = (
96+
str_to_datetime(t.start_date),
97+
str_to_datetime(t.end_date),
98+
)
99+
if te_start < start:
100+
t.start = datetime_str(start)
101+
if end < te_end:
102+
t.end = datetime_str(end)
103+
104+
92105
def worked_time_in_day(time_entries, tz):
93106
dr = DayDateRange(tz)
94107
day_time_entries = filter_time_entries(time_entries, dr)
108+
cut_time_entries_out_of_range(time_entries, dr)
95109
return WorkedTime(day_time_entries).summary()
96110

97111

98112
def worked_time_in_week(time_entries, tz):
99113
dr = WeekDateRange(tz)
100114
week_time_entries = filter_time_entries(time_entries, dr)
115+
cut_time_entries_out_of_range(time_entries, dr)
101116
return WorkedTime(week_time_entries).summary()
102117

103118

104119
def worked_time_in_month(time_entries, tz):
105120
dr = MonthDateRange(tz)
106121
month_time_entries = filter_time_entries(time_entries, dr)
122+
cut_time_entries_out_of_range(time_entries, dr)
107123
return WorkedTime(month_time_entries).summary()
108124

109125

0 commit comments

Comments
 (0)