from datetime import datetime, timezone from app import db def format_datetime(dt: datetime) -> str: """Format datetime to ISO format with UTC timezone indicator""" if dt is None: return None # If datetime is naive (no timezone), assume it's UTC if dt.tzinfo is None: dt = dt.replace(tzinfo=timezone.utc) return dt.isoformat() class Report(db.Model): """Report model for generated Word documents""" __tablename__ = 'reports' id = db.Column(db.Integer, primary_key=True) task_id = db.Column(db.Integer, db.ForeignKey('tasks.id'), nullable=False, unique=True) file_name = db.Column(db.String(255), nullable=False) file_path = db.Column(db.String(500), nullable=False) file_size = db.Column(db.Integer) created_at = db.Column(db.DateTime, default=datetime.utcnow, index=True) # Relationships task = db.relationship('Task', back_populates='report') def to_dict(self) -> dict: """Convert report to dictionary""" return { 'id': self.id, 'task_id': self.task_id, 'file_name': self.file_name, 'file_size': self.file_size, 'created_at': format_datetime(self.created_at), 'download_url': f'/api/reports/download?id={self.id}' } def __repr__(self): return f''