Convert into MVC and optimize the code
This commit is contained in:
64
app/Controllers/activity_controller.py
Normal file
64
app/Controllers/activity_controller.py
Normal file
@@ -0,0 +1,64 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user