Add admin dashboard stats functionality

parent b4083692
...@@ -1434,4 +1434,40 @@ def cleanup_expired_sessions() -> None: ...@@ -1434,4 +1434,40 @@ def cleanup_expired_sessions() -> None:
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute("DELETE FROM sessions WHERE last_activity < datetime('now', '-1 hour')") cursor.execute("DELETE FROM sessions WHERE last_activity < datetime('now', '-1 hour')")
conn.commit() conn.commit()
conn.close() conn.close()
\ No newline at end of file
# Admin dashboard stats functions
def get_admin_dashboard_stats() -> Dict[str, int]:
"""Get admin dashboard statistics."""
conn = get_db_connection()
cursor = conn.cursor()
stats = {}
# Total non-admin users
cursor.execute("SELECT COUNT(*) as count FROM users WHERE role != 'admin'")
stats['total_non_admin_users'] = cursor.fetchone()['count']
# Active non-admin users
cursor.execute("SELECT COUNT(*) as count FROM users WHERE role != 'admin' AND active = 1")
stats['active_non_admin_users'] = cursor.fetchone()['count']
# Inactive non-admin users
cursor.execute("SELECT COUNT(*) as count FROM users WHERE role != 'admin' AND active = 0")
stats['inactive_non_admin_users'] = cursor.fetchone()['count']
# Total tokens held by non-admin users
cursor.execute("SELECT COALESCE(SUM(tokens), 0) as total FROM users WHERE role != 'admin'")
stats['total_tokens_held'] = cursor.fetchone()['total']
# Total tokens used (from processing_queue)
cursor.execute("SELECT COALESCE(SUM(used_tokens), 0) as total FROM processing_queue WHERE used_tokens > 0")
stats['total_tokens_used'] = cursor.fetchone()['total']
# Total jobs executed (completed jobs)
cursor.execute("SELECT COUNT(*) as count FROM processing_queue WHERE status = 'completed'")
stats['total_jobs_executed'] = cursor.fetchone()['count']
conn.close()
return stats
\ No newline at end of file
...@@ -134,6 +134,12 @@ def dashboard(): ...@@ -134,6 +134,12 @@ def dashboard():
tokens = get_user_tokens(user['id']) tokens = get_user_tokens(user['id'])
queue_items = get_user_queue_items(user['id']) queue_items = get_user_queue_items(user['id'])
# Get admin stats if user is admin
admin_stats = {}
if user.get('role') == 'admin':
from .database import get_admin_dashboard_stats
admin_stats = get_admin_dashboard_stats()
return render_template('dashboard.html', return render_template('dashboard.html',
user=user, user=user,
tokens=tokens, tokens=tokens,
...@@ -141,7 +147,8 @@ def dashboard(): ...@@ -141,7 +147,8 @@ def dashboard():
active_jobs=len([j for j in queue_items if j["status"] == "processing"]), active_jobs=len([j for j in queue_items if j["status"] == "processing"]),
total_jobs=len(queue_items), total_jobs=len(queue_items),
queue_items=queue_items[:5], queue_items=queue_items[:5],
active_page='dashboard') active_page='dashboard',
**admin_stats)
@app.route('/login', methods=['GET', 'POST']) @app.route('/login', methods=['GET', 'POST'])
def login(): def login():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment