Skip to content
Prev Previous commit
Next Next commit
fix: change timezones in memory
  • Loading branch information
Angeluz-07 committed Jun 17, 2020
commit 96bec02ebcbbc9289cb644d9620b2560f04d4645
9 changes: 4 additions & 5 deletions utils/time.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,9 @@ def to_utc(date: datetime) -> datetime:
return localized

from dateutil.parser import isoparse
from dateutil import tz

there_is_utc_info = type(isoparse(value).tzinfo) == tz.tzutc
if there_is_utc_info:
return isoparse(value)
else:
no_timezone_info = isoparse(value).tzinfo is None
if no_timezone_info:
return to_utc(isoparse(value))
else:
return isoparse(value)
26 changes: 18 additions & 8 deletions utils/worked_time.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import pytz
from datetime import datetime, timedelta, timezone
from utils.time import datetime_str
from utils.time import datetime_str, str_to_datetime


class DateRange:
Expand Down Expand Up @@ -49,13 +49,6 @@ def date_range(time_offset: int):
}


def stop_running_time_entry(time_entries, tz):
end = datetime.now(tz)
for t in time_entries:
if t.end_date is None:
t.end_date = datetime_str(end)


class WorkedTime:
def __init__(self, time_entries):
self.time_entries = time_entries
Expand Down Expand Up @@ -108,10 +101,27 @@ def worked_time_in_month(time_entries, tz):
return WorkedTime(month_time_entries).summary()


def stop_running_time_entry(time_entries, tz):
end = datetime.now(tz)
for t in time_entries:
if t.end_date is None:
t.end_date = datetime_str(end)


def change_timezones(time_entries, tz):
for t in time_entries:
start_date = str_to_datetime(t.start_date)
end_date = str_to_datetime(t.end_date)

t.start_date = datetime_str(start_date.astimezone(tz))
t.end_date = datetime_str(end_date.astimezone(tz))


def summary(time_entries, time_offset):
offset_in_minutes = time_offset if time_offset else 300
tz = timezone(timedelta(minutes=-offset_in_minutes))
stop_running_time_entry(time_entries, tz)
change_timezones(time_entries, tz)
return {
'day': worked_time_in_day(time_entries, tz),
'week': worked_time_in_week(time_entries, tz),
Expand Down