Files
ERP/backend/app/utils/serialization.py

17 lines
599 B
Python

"""JSON-safe serialization helpers (contract: ISO 8601 UTC with `Z`)."""
from datetime import date, datetime, timezone
def to_iso(value: datetime | None) -> str | None:
"""Timestamptz -> '2026-08-02T10:00:00Z' (UTC). Naive values are treated as UTC."""
if value is None:
return None
if value.tzinfo is None:
value = value.replace(tzinfo=timezone.utc)
return value.astimezone(timezone.utc).isoformat().replace("+00:00", "Z")
def to_date(value: date | None) -> str | None:
"""Date -> 'YYYY-MM-DD'."""
return value.isoformat() if value is not None else None