""" Server log model for audit trail """ from app.extensions import db import datetime class ServerLog(db.Model): """Server log model for tracking system actions""" id = db.Column(db.Integer, primary_key=True) action = db.Column(db.String(255), nullable=False, index=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True) ip_address = db.Column(db.String(45), nullable=True) # Support IPv6 user_agent = db.Column(db.Text, nullable=True) timestamp = db.Column(db.DateTime, default=datetime.datetime.utcnow, index=True) level = db.Column(db.String(20), default='INFO') # INFO, WARNING, ERROR, DEBUG # Relationships user = db.relationship('User', backref='logs') @staticmethod def log(action, user_id=None, ip_address=None, user_agent=None, level='INFO'): """Create a new log entry""" log_entry = ServerLog( action=action, user_id=user_id, ip_address=ip_address, user_agent=user_agent, level=level ) db.session.add(log_entry) db.session.commit() return log_entry @staticmethod def get_recent_logs(limit=50): """Get recent log entries""" return ServerLog.query.order_by(ServerLog.timestamp.desc()).limit(limit).all() def __repr__(self): return f''