fix(stats): make API endpoints timezone-aware to fix sleep session attribution
This commit is contained in:
@@ -19,6 +19,9 @@ async def get_daily_summary(
|
|||||||
timezone_offset: int = Query(0),
|
timezone_offset: int = Query(0),
|
||||||
session: AsyncSession = Depends(get_session),
|
session: AsyncSession = Depends(get_session),
|
||||||
):
|
):
|
||||||
|
if to_date.hour == 0 and to_date.minute == 0:
|
||||||
|
to_date = to_date.replace(hour=23, minute=59, second=59, microsecond=999999)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
day_start_time = time.fromisoformat(day_start)
|
day_start_time = time.fromisoformat(day_start)
|
||||||
day_end_time = time.fromisoformat(day_end)
|
day_end_time = time.fromisoformat(day_end)
|
||||||
@@ -74,6 +77,9 @@ async def get_timetable(
|
|||||||
timezone_offset: int = Query(0),
|
timezone_offset: int = Query(0),
|
||||||
session: AsyncSession = Depends(get_session),
|
session: AsyncSession = Depends(get_session),
|
||||||
):
|
):
|
||||||
|
if to_date.hour == 0 and to_date.minute == 0:
|
||||||
|
to_date = to_date.replace(hour=23, minute=59, second=59, microsecond=999999)
|
||||||
|
|
||||||
utc_from_date = from_date + timedelta(minutes=timezone_offset)
|
utc_from_date = from_date + timedelta(minutes=timezone_offset)
|
||||||
utc_to_date = to_date + timedelta(minutes=timezone_offset)
|
utc_to_date = to_date + timedelta(minutes=timezone_offset)
|
||||||
adj_utc_from_date = utc_from_date - timedelta(days=1)
|
adj_utc_from_date = utc_from_date - timedelta(days=1)
|
||||||
@@ -156,12 +162,15 @@ async def get_wake_sleep_times(
|
|||||||
timezone_offset: int = Query(0),
|
timezone_offset: int = Query(0),
|
||||||
session: AsyncSession = Depends(get_session),
|
session: AsyncSession = Depends(get_session),
|
||||||
):
|
):
|
||||||
|
if to_date.hour == 0 and to_date.minute == 0:
|
||||||
|
to_date = to_date.replace(hour=23, minute=59, second=59, microsecond=999999)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
w_ref_time = time.fromisoformat(wakeup_ref)
|
w_ref_time = time.fromisoformat(wakeup_ref)
|
||||||
b_ref_time = time.fromisoformat(bedtime_ref)
|
b_ref_time = time.fromisoformat(bedtime_ref)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return {"days": []}
|
return {"days": []}
|
||||||
|
|
||||||
utc_from_date = from_date + timedelta(minutes=timezone_offset)
|
utc_from_date = from_date + timedelta(minutes=timezone_offset)
|
||||||
utc_to_date = to_date + timedelta(minutes=timezone_offset)
|
utc_to_date = to_date + timedelta(minutes=timezone_offset)
|
||||||
adj_utc_from_date = utc_from_date - timedelta(days=1)
|
adj_utc_from_date = utc_from_date - timedelta(days=1)
|
||||||
|
|||||||
Reference in New Issue
Block a user