from datetime import datetime from app.extensions import db MAINTENANCE_STATUSES = [ ('open', 'Open / Diagnosed'), ('in_progress', 'In Progress'), ('closed', 'Closed'), ] class MaintenanceRecord(db.Model): """A maintenance or service event performed on a single asset.""" __tablename__ = 'maintenance_records' id = db.Column(db.Integer, primary_key=True) asset_id = db.Column(db.Integer, db.ForeignKey('assets.id'), nullable=False) start_date = db.Column(db.Date, nullable=False) end_date = db.Column(db.Date, nullable=True) status = db.Column(db.String(20), nullable=False, default='open') initial_diagnosis = db.Column(db.Text, nullable=True) action_taken = db.Column(db.Text, nullable=True) action_result = db.Column(db.Text, nullable=True) created_by_id = db.Column(db.Integer, db.ForeignKey('admin_users.id'), nullable=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # Relationships asset = db.relationship('Asset', backref=db.backref('maintenance_records', lazy='dynamic')) created_by = db.relationship('AdminUser', foreign_keys=[created_by_id]) @property def is_open(self): return self.status != 'closed' def __repr__(self): return f''