diff --git a/backend/app/models.py b/backend/app/models.py index cedd5c4..a600007 100644 --- a/backend/app/models.py +++ b/backend/app/models.py @@ -1,5 +1,5 @@ from .extensions import db -from datetime import datetime +from datetime import datetime, date class Project(db.Model): __tablename__ = 'projects' @@ -42,12 +42,22 @@ class Deliverable(db.Model): status = db.Column(db.String(20), nullable=False, default='upcoming') created_at = db.Column(db.DateTime, default=datetime.utcnow) + def effective_status(self): + """ + Returns 'overdue' if the due date has passed and the deliverable + has not been marked completed. Completed deliverables are never + auto-downgraded regardless of date. + """ + if self.status != 'completed' and self.due_date < date.today(): + return 'overdue' + return self.status + def to_dict(self): return { 'id': self.id, 'project_id': self.project_id, 'title': self.title, 'due_date': self.due_date.isoformat() if self.due_date else None, - 'status': self.status, + 'status': self.effective_status(), 'created_at': self.created_at.isoformat() if self.created_at else None, }