| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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'<Report {self.id} {self.file_name}>'
|