@@ -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+
92105def 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
98112def 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
104119def 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