from datetime import datetime from flask import Blueprint, jsonify, request from ..models import ActivityLog, ActivityCategory bp = Blueprint("api", __name__, url_prefix="/api") @bp.route("/activity_logs") def get_activity_logs(): """Get activity logs with filtering options.""" # Get query parameters category = request.args.get("category") action = request.args.get("action") after = request.args.get("after") limit = request.args.get("limit", 20, type=int) # Build query query = ActivityLog.query if category: query = query.filter(ActivityLog.category == category) if action: query = query.filter(ActivityLog.action == action) if after: try: after_date = datetime.fromisoformat(after.replace("Z", "+00:00")) query = query.filter(ActivityLog.timestamp > after_date) except (ValueError, TypeError): pass # Order by most recent first and limit results logs = query.order_by(ActivityLog.timestamp.desc()).limit(limit).all() # Format the results result = [] for log in logs: log_data = { "id": log.id, "timestamp": log.timestamp.isoformat(), "category": log.category, "action": log.action, "description": log.description, "status": log.status, "paper_id": log.paper_id, "extra_data": log.extra_data } result.append(log_data) return jsonify(result)