fix: add UTC timezone indicator to all datetime serialization
Database stores times in UTC but serialized without timezone info, causing frontend to misinterpret as local time. Now all datetime fields include 'Z' suffix to indicate UTC, enabling proper timezone conversion in the browser. - Add UTCDatetimeBaseModel base class for Pydantic schemas - Update model to_dict() methods to append 'Z' suffix - Affects: tasks, users, sessions, audit logs, translations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,16 +56,19 @@ class Session(Base):
|
||||
return f"<Session(id={self.id}, user_id={self.user_id}, expires_at='{self.expires_at}')>"
|
||||
|
||||
def to_dict(self):
|
||||
"""Convert session to dictionary (excluding sensitive tokens)"""
|
||||
"""Convert session to dictionary (excluding sensitive tokens).
|
||||
|
||||
All datetime fields are serialized with 'Z' suffix to indicate UTC timezone.
|
||||
"""
|
||||
return {
|
||||
"id": self.id,
|
||||
"user_id": self.user_id,
|
||||
"token_type": self.token_type,
|
||||
"expires_at": self.expires_at.isoformat() if self.expires_at else None,
|
||||
"issued_at": self.issued_at.isoformat() if self.issued_at else None,
|
||||
"expires_at": self.expires_at.isoformat() + 'Z' if self.expires_at else None,
|
||||
"issued_at": self.issued_at.isoformat() + 'Z' if self.issued_at else None,
|
||||
"ip_address": self.ip_address,
|
||||
"created_at": self.created_at.isoformat() if self.created_at else None,
|
||||
"last_accessed_at": self.last_accessed_at.isoformat() if self.last_accessed_at else None
|
||||
"created_at": self.created_at.isoformat() + 'Z' if self.created_at else None,
|
||||
"last_accessed_at": self.last_accessed_at.isoformat() + 'Z' if self.last_accessed_at else None
|
||||
}
|
||||
|
||||
@property
|
||||
|
||||
Reference in New Issue
Block a user