50 lines
1.5 KiB
Python

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)