Skip to content
Prev Previous commit
Next Next commit
fix: add function to cut off time-entries that partially belongs to a…
… range
  • Loading branch information
Angeluz-07 committed Jun 18, 2020
commit 85ee35f9b832758947f7fdb1eda4c99cc18a1dd4
16 changes: 16 additions & 0 deletions utils/worked_time.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,21 +89,37 @@ def filter_time_entries(time_entries, dr: DateRange):
return result


def cut_time_entries_out_of_range(time_entries, dr):
start, end = dr.start(), dr.end()
for t in time_entries:
te_start, te_end = (
str_to_datetime(t.start_date),
str_to_datetime(t.end_date),
)
if te_start < start:
t.start = datetime_str(start)
if end < te_end:
t.end = datetime_str(end)


def worked_time_in_day(time_entries, tz):
dr = DayDateRange(tz)
day_time_entries = filter_time_entries(time_entries, dr)
cut_time_entries_out_of_range(time_entries, dr)
return WorkedTime(day_time_entries).summary()


def worked_time_in_week(time_entries, tz):
dr = WeekDateRange(tz)
week_time_entries = filter_time_entries(time_entries, dr)
cut_time_entries_out_of_range(time_entries, dr)
return WorkedTime(week_time_entries).summary()


def worked_time_in_month(time_entries, tz):
dr = MonthDateRange(tz)
month_time_entries = filter_time_entries(time_entries, dr)
cut_time_entries_out_of_range(time_entries, dr)
return WorkedTime(month_time_entries).summary()


Expand Down