64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
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
|
|
) |