Fix #11: Replace deprecated datetime.utcnow with timezone-aware UTC

- Import timezone from datetime
- Add _utcnow() helper using datetime.now(timezone.utc)
- Replace all default=datetime.utcnow column defaults
- Fixes deprecation warnings on Python 3.12+
This commit is contained in:
3nd3r 2026-04-12 13:00:03 -05:00
parent 9570283ad8
commit 01c6c4a1b0
1 changed files with 10 additions and 6 deletions

View File

@ -7,10 +7,14 @@ users Registered accounts
messages Encrypted PM history (useruser and userAI)
"""
from datetime import datetime
from datetime import datetime, timezone
from database import db
def _utcnow():
return datetime.now(timezone.utc)
class User(db.Model):
__tablename__ = "users"
@ -21,7 +25,7 @@ class User(db.Model):
has_ai_access = db.Column(db.Boolean, default=False, nullable=False)
ai_messages_used = db.Column(db.Integer, default=0, nullable=False)
is_verified = db.Column(db.Boolean, default=False, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
created_at = db.Column(db.DateTime, default=_utcnow, nullable=False)
sent_messages = db.relationship(
"Message", foreign_keys="Message.sender_id",
@ -52,7 +56,7 @@ class UserIgnore(db.Model):
id = db.Column(db.Integer, primary_key=True)
ignorer_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
ignored_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
created_at = db.Column(db.DateTime, default=_utcnow, nullable=False)
__table_args__ = (
db.Index("ix_ignore_pair", "ignorer_id", "ignored_id", unique=True),
@ -70,7 +74,7 @@ class Message(db.Model):
encrypted_content = db.Column(db.Text, nullable=False)
# AES-GCM nonce / IV base64 encoded (12 bytes → 16 chars)
nonce = db.Column(db.String(64), nullable=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
timestamp = db.Column(db.DateTime, default=_utcnow, nullable=False)
__table_args__ = (
# Composite indices for the two common query patterns
@ -90,7 +94,7 @@ class Ban(db.Model):
username = db.Column(db.String(20), nullable=False, index=True)
ip = db.Column(db.String(45), nullable=True, index=True)
reason = db.Column(db.String(255), nullable=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
created_at = db.Column(db.DateTime, default=_utcnow, nullable=False)
class Mute(db.Model):
@ -99,4 +103,4 @@ class Mute(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False, index=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
created_at = db.Column(db.DateTime, default=_utcnow, nullable=False)