import os from flask import request, render_template, current_app from datetime import datetime def activity_log_controller(): logs = [] log_file = os.path.join(current_app.root_path, 'activity.log') if os.path.exists(log_file): with open(log_file, 'r') as f: for line in f: parts = line.strip().split(" | ") if len(parts) == 4: logs.append({ "timestamp": parts[0].replace("Timestamp:", "").strip(), "user": parts[1].replace("User:", "").strip(), "action": parts[2].replace("Action:", "").strip(), "details": parts[3].replace("Details:", "").strip() }) # Filters start_date = request.args.get("start_date") end_date = request.args.get("end_date") username = request.args.get("username") filtered_logs = logs # Date filter if start_date or end_date: try: if start_date: start_dt = datetime.strptime(start_date, "%Y-%m-%d") else: start_dt = datetime.min if end_date: end_dt = datetime.strptime(end_date, "%Y-%m-%d") else: end_dt = datetime.max filtered_logs = [ log for log in filtered_logs if start_dt <= datetime.strptime( log["timestamp"], "%Y-%m-%d %H:%M:%S" ) <= end_dt.replace(hour=23, minute=59, second=59) ] except Exception as e: print("Date filter error:", e) # Username filter if username: filtered_logs = [ log for log in filtered_logs if log["user"].lower() == username.lower() ] return render_template( "activity_log.html", logs=filtered_logs, start_date=start_date, end_date=end_date, username=username )