Skip to content

Commit

Permalink
Hot-fix for timezone issues in date time selection
Browse files Browse the repository at this point in the history
  • Loading branch information
KrisJordan committed Jan 22, 2025
1 parent 656b41f commit 2cebf9f
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 10 deletions.
2 changes: 1 addition & 1 deletion backend/models/coworking/time_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from pydantic import BaseModel, field_validator, ValidationInfo, validator
from pydantic import BaseModel, field_validator, ValidationInfo
from typing import Self

__authors__ = ["Kris Jordan, Yuvraj Jain"]
Expand Down
24 changes: 19 additions & 5 deletions backend/models/office_hours/office_hours.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
from pydantic import BaseModel
from datetime import datetime, date
from datetime import datetime
from enum import Enum

from ..room import Room, RoomPartial
from .course_site import CourseSite
from pydantic import BaseModel, field_validator, ValidationInfo
from .event_type import OfficeHoursEventModeType, OfficeHoursEventType

__authors__ = [
Expand Down Expand Up @@ -49,6 +46,23 @@ class NewOfficeHours(BaseModel):
room_id: str
recurrence_pattern_id: int | None

@field_validator("start_time", "end_time", mode="before")
@classmethod
def remove_timezone(cls, value: datetime):
if type(value) == str:
dt = datetime.fromisoformat(value.replace("Z", "+00:00"))
dt = dt.astimezone(ZoneInfo("America/New_York"))
dt = dt.replace(tzinfo=None)
return dt
return value

@field_validator("end_time")
@classmethod
def check_end_greater_than_start(cls, v: datetime, info: ValidationInfo):
if v <= info.data["start_time"]:
raise ValueError("end must be greater than start")
return v


class OfficeHours(NewOfficeHours):
"""
Expand Down
3 changes: 2 additions & 1 deletion backend/models/office_hours/office_hours_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
OfficeHoursRecurrencePattern,
)
from .ticket import OfficeHoursTicket
from .office_hours import OfficeHours, CourseSite
from .office_hours import OfficeHours
from .course_site import CourseSite
from ..room import Room

__authors__ = [
Expand Down
6 changes: 3 additions & 3 deletions backend/test/services/office_hours/office_hours_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ def fake_data_fixture(session: Session):
description="Sample",
location_description="Sample",
start_time=datetime.now(),
end_time=datetime.now(),
end_time=datetime.now() + timedelta(hours=1),
course_site_id=comp_110_site.id,
room_id=room_data.group_a.id,
recurrence_pattern_id=None,
Expand Down Expand Up @@ -564,7 +564,7 @@ def fake_data_fixture(session: Session):
description="Sample",
location_description="Sample",
start_time=datetime.now(),
end_time=datetime.now(),
end_time=datetime.now() + timedelta(hours=1),
course_site_id=404,
room_id=room_data.group_a.id,
recurrence_pattern_id=None,
Expand All @@ -590,7 +590,7 @@ def fake_data_fixture(session: Session):
description="Sample",
location_description="Sample",
start_time=datetime.now(),
end_time=datetime.now(),
end_time=datetime.now() + timedelta(hours=1),
course_site_id=comp_110_site.id,
room_id=room_data.group_a.id,
recurrence_pattern_id=None,
Expand Down

0 comments on commit 2cebf9f

Please sign in to comment.