Fix trip map unbooked flight pins and timezone-safe busy date comparisons
This commit is contained in:
parent
f38c5327ea
commit
f9b79d5a51
3 changed files with 150 additions and 7 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import itertools
|
||||
import typing
|
||||
from datetime import date, datetime, timedelta
|
||||
from datetime import date, datetime, timedelta, timezone
|
||||
|
||||
import flask
|
||||
import pycountry
|
||||
|
|
@ -84,13 +84,20 @@ def get_busy_events(
|
|||
def _parse_datetime_field(datetime_obj: datetime | date | str) -> tuple[datetime, date]:
|
||||
"""Parse a datetime field that could be datetime object or string."""
|
||||
if isinstance(datetime_obj, datetime):
|
||||
return datetime_obj, datetime_obj.date()
|
||||
if isinstance(datetime_obj, date):
|
||||
return datetime.combine(datetime_obj, datetime.min.time()), datetime_obj
|
||||
if isinstance(datetime_obj, str):
|
||||
dt = datetime_obj
|
||||
elif isinstance(datetime_obj, date):
|
||||
dt = datetime.combine(datetime_obj, datetime.min.time(), tzinfo=timezone.utc)
|
||||
elif isinstance(datetime_obj, str):
|
||||
dt = datetime.fromisoformat(datetime_obj.replace("Z", "+00:00"))
|
||||
return dt, dt.date()
|
||||
raise ValueError(f"Invalid datetime format: {datetime_obj}")
|
||||
else:
|
||||
raise ValueError(f"Invalid datetime format: {datetime_obj}")
|
||||
|
||||
if dt.tzinfo is None:
|
||||
dt = dt.replace(tzinfo=timezone.utc)
|
||||
else:
|
||||
dt = dt.astimezone(timezone.utc)
|
||||
|
||||
return dt, dt.date()
|
||||
|
||||
|
||||
def _get_accommodation_location(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue