TimeZone Bug Fix
This commit is contained in:
+1
-1
@@ -77,7 +77,7 @@ class Order(Base):
|
|||||||
# When the order/ticket was created in the source system
|
# When the order/ticket was created in the source system
|
||||||
source_created_at = Column(DateTime, nullable=True)
|
source_created_at = Column(DateTime, nullable=True)
|
||||||
# When we pulled it into this app
|
# When we pulled it into this app
|
||||||
imported_at = Column(DateTime, nullable=False, default=dt.datetime.utcnow)
|
imported_at = Column(DateTime, nullable=False, default=dt.datetime.now)
|
||||||
# When this ticket first transitioned into a fulfilled status - used
|
# When this ticket first transitioned into a fulfilled status - used
|
||||||
# for "fulfilled today" counts and as a rough audit trail. Set once,
|
# for "fulfilled today" counts and as a rough audit trail. Set once,
|
||||||
# on the transition; not touched again while it stays fulfilled.
|
# on the transition; not touched again while it stays fulfilled.
|
||||||
|
|||||||
+12
-5
@@ -102,6 +102,13 @@ def save_orders(orders: List[NormalizedOrder]) -> SaveResult:
|
|||||||
what moves it into the Done pile. cancelled_at works the same way for
|
what moves it into the Done pile. cancelled_at works the same way for
|
||||||
CANCELLED_STATUSES - it's what limits the Cancelled tab to "cancelled
|
CANCELLED_STATUSES - it's what limits the Cancelled tab to "cancelled
|
||||||
today" rather than showing every cancelled ticket ever.
|
today" rather than showing every cancelled ticket ever.
|
||||||
|
|
||||||
|
These get stamped with dt.datetime.now() (LOCAL time), not utcnow() -
|
||||||
|
deliberately, since every "is this today" check elsewhere compares
|
||||||
|
against dt.date.today() (also local). Mixing the two caused a real
|
||||||
|
bug: a ticket cancelled in the evening in a US timezone would get a
|
||||||
|
UTC timestamp that had already rolled into tomorrow, failing the
|
||||||
|
same-day check immediately and landing on Done instead of Cancelled.
|
||||||
"""
|
"""
|
||||||
session = get_session()
|
session = get_session()
|
||||||
new_count = 0
|
new_count = 0
|
||||||
@@ -157,10 +164,10 @@ def save_orders(orders: List[NormalizedOrder]) -> SaveResult:
|
|||||||
source_created_at=order["source_created_at"],
|
source_created_at=order["source_created_at"],
|
||||||
raw_data=order["raw_data"],
|
raw_data=order["raw_data"],
|
||||||
fulfilled_at=(
|
fulfilled_at=(
|
||||||
dt.datetime.utcnow() if status_in(new_status, fulfilled_statuses) else None
|
dt.datetime.now() if status_in(new_status, fulfilled_statuses) else None
|
||||||
),
|
),
|
||||||
cancelled_at=(
|
cancelled_at=(
|
||||||
dt.datetime.utcnow() if status_in(new_status, cancelled_statuses) else None
|
dt.datetime.now() if status_in(new_status, cancelled_statuses) else None
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -178,11 +185,11 @@ def save_orders(orders: List[NormalizedOrder]) -> SaveResult:
|
|||||||
if status_in(new_status, fulfilled_statuses) and not status_in(
|
if status_in(new_status, fulfilled_statuses) and not status_in(
|
||||||
old_status, fulfilled_statuses
|
old_status, fulfilled_statuses
|
||||||
):
|
):
|
||||||
existing.fulfilled_at = dt.datetime.utcnow()
|
existing.fulfilled_at = dt.datetime.now()
|
||||||
if status_in(new_status, cancelled_statuses) and not status_in(
|
if status_in(new_status, cancelled_statuses) and not status_in(
|
||||||
old_status, cancelled_statuses
|
old_status, cancelled_statuses
|
||||||
):
|
):
|
||||||
existing.cancelled_at = dt.datetime.utcnow()
|
existing.cancelled_at = dt.datetime.now()
|
||||||
|
|
||||||
existing.ticket_number = order.get("ticket_number")
|
existing.ticket_number = order.get("ticket_number")
|
||||||
existing.company = order.get("company", "Unknown")
|
existing.company = order.get("company", "Unknown")
|
||||||
@@ -265,7 +272,7 @@ def mark_shipstation_sent(ticket_number: str) -> None:
|
|||||||
select(Order).where(Order.source == "jira", Order.ticket_number == ticket_number)
|
select(Order).where(Order.source == "jira", Order.ticket_number == ticket_number)
|
||||||
).scalar_one_or_none()
|
).scalar_one_or_none()
|
||||||
if order is not None:
|
if order is not None:
|
||||||
order.shipstation_sent_at = dt.datetime.utcnow()
|
order.shipstation_sent_at = dt.datetime.now()
|
||||||
session.commit()
|
session.commit()
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user