report.py 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. from datetime import datetime
  2. from app import db
  3. class Report(db.Model):
  4. """Report model for generated Word documents"""
  5. __tablename__ = 'reports'
  6. id = db.Column(db.Integer, primary_key=True)
  7. task_id = db.Column(db.Integer, db.ForeignKey('tasks.id'), nullable=False, unique=True)
  8. file_name = db.Column(db.String(255), nullable=False)
  9. file_path = db.Column(db.String(500), nullable=False)
  10. file_size = db.Column(db.Integer)
  11. created_at = db.Column(db.DateTime, default=datetime.utcnow, index=True)
  12. # Relationships
  13. task = db.relationship('Task', back_populates='report')
  14. def to_dict(self) -> dict:
  15. """Convert report to dictionary"""
  16. return {
  17. 'id': self.id,
  18. 'task_id': self.task_id,
  19. 'file_name': self.file_name,
  20. 'file_size': self.file_size,
  21. 'created_at': self.created_at.isoformat() if self.created_at else None,
  22. 'download_url': f'/api/reports/download?id={self.id}'
  23. }
  24. def __repr__(self):
  25. return f'<Report {self.id} {self.file_name}>'