bug fix - route probleme
Dieser Commit ist enthalten in:
@@ -21,7 +21,7 @@ def sessions():
|
||||
cur = conn.cursor()
|
||||
|
||||
try:
|
||||
# Get active sessions with calculated inactive time
|
||||
# Get is_active sessions with calculated inactive time
|
||||
cur.execute("""
|
||||
SELECT s.id, s.session_id, l.license_key, c.name, s.ip_address,
|
||||
s.user_agent, s.started_at, s.last_heartbeat,
|
||||
@@ -81,11 +81,11 @@ def session_history():
|
||||
s.id,
|
||||
s.license_key,
|
||||
s.username,
|
||||
s.device_id,
|
||||
s.login_time,
|
||||
s.logout_time,
|
||||
s.last_activity,
|
||||
s.active,
|
||||
s.hardware_id,
|
||||
s.started_at,
|
||||
s.ended_at,
|
||||
s.last_heartbeat,
|
||||
s.is_active,
|
||||
l.customer_name,
|
||||
l.license_type,
|
||||
l.is_test
|
||||
@@ -106,22 +106,22 @@ def session_history():
|
||||
params.append(f'%{username}%')
|
||||
|
||||
# Time filter
|
||||
query += " AND s.login_time >= CURRENT_TIMESTAMP - INTERVAL '%s days'"
|
||||
query += " AND s.started_at >= CURRENT_TIMESTAMP - INTERVAL '%s days'"
|
||||
params.append(days)
|
||||
|
||||
query += " ORDER BY s.login_time DESC LIMIT 1000"
|
||||
query += " ORDER BY s.started_at DESC LIMIT 1000"
|
||||
|
||||
cur.execute(query, params)
|
||||
|
||||
sessions_list = []
|
||||
for row in cur.fetchall():
|
||||
session_duration = None
|
||||
if row[4] and row[5]: # login_time and logout_time
|
||||
if row[4] and row[5]: # started_at and ended_at
|
||||
duration = row[5] - row[4]
|
||||
hours = int(duration.total_seconds() // 3600)
|
||||
minutes = int((duration.total_seconds() % 3600) // 60)
|
||||
session_duration = f"{hours}h {minutes}m"
|
||||
elif row[4] and row[7]: # login_time and active
|
||||
elif row[4] and row[7]: # started_at and is_active
|
||||
duration = datetime.now(ZoneInfo("UTC")) - row[4]
|
||||
hours = int(duration.total_seconds() // 3600)
|
||||
minutes = int((duration.total_seconds() % 3600) // 60)
|
||||
@@ -131,11 +131,11 @@ def session_history():
|
||||
'id': row[0],
|
||||
'license_key': row[1],
|
||||
'username': row[2],
|
||||
'device_id': row[3],
|
||||
'login_time': row[4],
|
||||
'logout_time': row[5],
|
||||
'last_activity': row[6],
|
||||
'active': row[7],
|
||||
'hardware_id': row[3],
|
||||
'started_at': row[4],
|
||||
'ended_at': row[5],
|
||||
'last_heartbeat': row[6],
|
||||
'is_active': row[7],
|
||||
'customer_name': row[8],
|
||||
'license_type': row[9],
|
||||
'is_test': row[10],
|
||||
@@ -147,7 +147,7 @@ def session_history():
|
||||
SELECT DISTINCT s.license_key, l.customer_name
|
||||
FROM sessions s
|
||||
LEFT JOIN licenses l ON s.license_key = l.license_key
|
||||
WHERE s.login_time >= CURRENT_TIMESTAMP - INTERVAL '30 days'
|
||||
WHERE s.started_at >= CURRENT_TIMESTAMP - INTERVAL '30 days'
|
||||
ORDER BY l.customer_name, s.license_key
|
||||
""")
|
||||
|
||||
@@ -186,9 +186,9 @@ def terminate_session(session_id):
|
||||
try:
|
||||
# Get session info
|
||||
cur.execute("""
|
||||
SELECT license_key, username, device_id
|
||||
SELECT license_key, username, hardware_id
|
||||
FROM sessions
|
||||
WHERE id = %s AND active = true
|
||||
WHERE id = %s AND is_active = true
|
||||
""", (session_id,))
|
||||
|
||||
session_info = cur.fetchone()
|
||||
@@ -199,7 +199,7 @@ def terminate_session(session_id):
|
||||
# Terminate session
|
||||
cur.execute("""
|
||||
UPDATE sessions
|
||||
SET active = false, logout_time = CURRENT_TIMESTAMP
|
||||
SET is_active = false, ended_at = CURRENT_TIMESTAMP
|
||||
WHERE id = %s
|
||||
""", (session_id,))
|
||||
|
||||
@@ -230,10 +230,10 @@ def terminate_all_sessions(license_key):
|
||||
cur = conn.cursor()
|
||||
|
||||
try:
|
||||
# Count active sessions
|
||||
# Count is_active sessions
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) FROM sessions
|
||||
WHERE license_key = %s AND active = true
|
||||
WHERE license_key = %s AND is_active = true
|
||||
""", (license_key,))
|
||||
|
||||
active_count = cur.fetchone()[0]
|
||||
@@ -245,8 +245,8 @@ def terminate_all_sessions(license_key):
|
||||
# Terminate all sessions
|
||||
cur.execute("""
|
||||
UPDATE sessions
|
||||
SET active = false, logout_time = CURRENT_TIMESTAMP
|
||||
WHERE license_key = %s AND active = true
|
||||
SET is_active = false, ended_at = CURRENT_TIMESTAMP
|
||||
WHERE license_key = %s AND is_active = true
|
||||
""", (license_key,))
|
||||
|
||||
conn.commit()
|
||||
@@ -281,8 +281,8 @@ def cleanup_sessions():
|
||||
# Delete old inactive sessions
|
||||
cur.execute("""
|
||||
DELETE FROM sessions
|
||||
WHERE active = false
|
||||
AND logout_time < CURRENT_TIMESTAMP - INTERVAL '%s days'
|
||||
WHERE is_active = false
|
||||
AND ended_at < CURRENT_TIMESTAMP - INTERVAL '%s days'
|
||||
RETURNING id
|
||||
""", (days,))
|
||||
|
||||
@@ -322,10 +322,10 @@ def session_statistics():
|
||||
SELECT
|
||||
COUNT(DISTINCT s.license_key) as active_licenses,
|
||||
COUNT(DISTINCT s.username) as unique_users,
|
||||
COUNT(DISTINCT s.device_id) as unique_devices,
|
||||
COUNT(DISTINCT s.hardware_id) as unique_devices,
|
||||
COUNT(*) as total_active_sessions
|
||||
FROM sessions s
|
||||
WHERE s.active = true
|
||||
WHERE s.is_active = true
|
||||
""")
|
||||
|
||||
current_stats = cur.fetchone()
|
||||
@@ -337,7 +337,7 @@ def session_statistics():
|
||||
COUNT(*) as session_count
|
||||
FROM sessions s
|
||||
JOIN licenses l ON s.license_key = l.license_key
|
||||
WHERE s.active = true
|
||||
WHERE s.is_active = true
|
||||
GROUP BY l.license_type
|
||||
ORDER BY session_count DESC
|
||||
""")
|
||||
@@ -358,7 +358,7 @@ def session_statistics():
|
||||
l.device_limit
|
||||
FROM sessions s
|
||||
JOIN licenses l ON s.license_key = l.license_key
|
||||
WHERE s.active = true
|
||||
WHERE s.is_active = true
|
||||
GROUP BY s.license_key, l.customer_name, l.device_limit
|
||||
ORDER BY session_count DESC
|
||||
LIMIT 10
|
||||
@@ -376,13 +376,13 @@ def session_statistics():
|
||||
# Session-Verlauf (letzte 7 Tage)
|
||||
cur.execute("""
|
||||
SELECT
|
||||
DATE(login_time) as date,
|
||||
DATE(started_at) as date,
|
||||
COUNT(*) as login_count,
|
||||
COUNT(DISTINCT license_key) as unique_licenses,
|
||||
COUNT(DISTINCT username) as unique_users
|
||||
FROM sessions
|
||||
WHERE login_time >= CURRENT_DATE - INTERVAL '7 days'
|
||||
GROUP BY DATE(login_time)
|
||||
WHERE started_at >= CURRENT_DATE - INTERVAL '7 days'
|
||||
GROUP BY DATE(started_at)
|
||||
ORDER BY date
|
||||
""")
|
||||
|
||||
@@ -398,12 +398,12 @@ def session_statistics():
|
||||
# Durchschnittliche Session-Dauer
|
||||
cur.execute("""
|
||||
SELECT
|
||||
AVG(EXTRACT(EPOCH FROM (logout_time - login_time))/3600) as avg_duration_hours
|
||||
AVG(EXTRACT(EPOCH FROM (ended_at - started_at))/3600) as avg_duration_hours
|
||||
FROM sessions
|
||||
WHERE active = false
|
||||
AND logout_time IS NOT NULL
|
||||
AND logout_time - login_time < INTERVAL '24 hours'
|
||||
AND login_time >= CURRENT_DATE - INTERVAL '30 days'
|
||||
WHERE is_active = false
|
||||
AND ended_at IS NOT NULL
|
||||
AND ended_at - started_at < INTERVAL '24 hours'
|
||||
AND started_at >= CURRENT_DATE - INTERVAL '30 days'
|
||||
""")
|
||||
|
||||
avg_duration = cur.fetchone()[0] or 0
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren