Dashboard angepasst
Dieser Commit ist enthalten in:
@@ -181,17 +181,16 @@ def dashboard():
|
|||||||
recent_activities = cur.fetchall() if cur.rowcount > 0 else []
|
recent_activities = cur.fetchall() if cur.rowcount > 0 else []
|
||||||
|
|
||||||
# Lizenztypen zählen (nur echte Lizenzen)
|
# Lizenztypen zählen (nur echte Lizenzen)
|
||||||
# Note: This assumes you have a license_type field or similar to distinguish between full and test versions
|
|
||||||
# For now, counting all non-test licenses as full licenses
|
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT COUNT(*) as full_licenses
|
SELECT
|
||||||
|
COUNT(CASE WHEN license_type = 'full' THEN 1 END) as full_licenses,
|
||||||
|
COUNT(CASE WHEN license_type = 'test' THEN 1 END) as test_licenses
|
||||||
FROM licenses
|
FROM licenses
|
||||||
WHERE is_fake = false
|
WHERE is_fake = false
|
||||||
""")
|
""")
|
||||||
license_count = cur.fetchone()
|
license_types = cur.fetchone()
|
||||||
full_licenses = license_count[0] if license_count and license_count[0] else 0
|
full_licenses = license_types[0] if license_types and license_types[0] is not None else 0
|
||||||
# For now, we don't distinguish between full and test versions
|
test_version_licenses = license_types[1] if license_types and license_types[1] is not None else 0
|
||||||
test_version_licenses = 0
|
|
||||||
|
|
||||||
# Lizenzstatus zählen (nur echte Lizenzen)
|
# Lizenzstatus zählen (nur echte Lizenzen)
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
@@ -257,9 +256,9 @@ def dashboard():
|
|||||||
'active_sessions': active_sessions, # Admin-Panel Sessions
|
'active_sessions': active_sessions, # Admin-Panel Sessions
|
||||||
'active_usage': active_usage, # Aktive Kunden-Nutzung
|
'active_usage': active_usage, # Aktive Kunden-Nutzung
|
||||||
'active_licenses': active_licenses_count,
|
'active_licenses': active_licenses_count,
|
||||||
'full_licenses': full_licenses,
|
'full_licenses': full_licenses or 0,
|
||||||
'test_licenses': test_version_licenses, # Test versions, not test data
|
'fake_licenses': test_version_licenses or 0, # Test versions (license_type='test'), not fake data
|
||||||
'fake_data_count': test_licenses_count, # Actual test data count
|
'fake_data_count': test_licenses_count, # Actual test data count (is_fake=true)
|
||||||
'fake_customers_count': fake_customers_count,
|
'fake_customers_count': fake_customers_count,
|
||||||
'fake_resources_count': 0,
|
'fake_resources_count': 0,
|
||||||
'expired_licenses': expired_licenses,
|
'expired_licenses': expired_licenses,
|
||||||
@@ -286,8 +285,8 @@ def dashboard():
|
|||||||
COUNT(CASE WHEN status = 'allocated' THEN 1 END) as allocated,
|
COUNT(CASE WHEN status = 'allocated' THEN 1 END) as allocated,
|
||||||
COUNT(CASE WHEN status = 'quarantine' THEN 1 END) as quarantine,
|
COUNT(CASE WHEN status = 'quarantine' THEN 1 END) as quarantine,
|
||||||
COUNT(*) as total
|
COUNT(*) as total
|
||||||
FROM resource_pool
|
FROM resource_pools
|
||||||
WHERE type = %s AND is_fake = false
|
WHERE resource_type = %s AND is_fake = false
|
||||||
""", (resource_type,))
|
""", (resource_type,))
|
||||||
|
|
||||||
result = cur.fetchone()
|
result = cur.fetchone()
|
||||||
@@ -323,10 +322,12 @@ def dashboard():
|
|||||||
'total': 0,
|
'total': 0,
|
||||||
'available_percent': 0
|
'available_percent': 0
|
||||||
}
|
}
|
||||||
|
# Reset the connection after error
|
||||||
|
conn.rollback()
|
||||||
|
|
||||||
# Count test resources separately
|
# Count test resources separately
|
||||||
try:
|
try:
|
||||||
cur.execute("SELECT COUNT(*) FROM resource_pool WHERE is_fake = true")
|
cur.execute("SELECT COUNT(*) FROM resource_pools WHERE is_fake = true")
|
||||||
fake_resources_count = cur.fetchone()[0] if cur.rowcount > 0 else 0
|
fake_resources_count = cur.fetchone()[0] if cur.rowcount > 0 else 0
|
||||||
stats['fake_resources_count'] = fake_resources_count
|
stats['fake_resources_count'] = fake_resources_count
|
||||||
except:
|
except:
|
||||||
@@ -1370,3 +1371,49 @@ def test_api_key():
|
|||||||
cur.close()
|
cur.close()
|
||||||
if 'conn' in locals():
|
if 'conn' in locals():
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
@admin_bp.route("/test-license-types")
|
||||||
|
@login_required
|
||||||
|
def test_license_types():
|
||||||
|
"""Test route to check license type counts"""
|
||||||
|
try:
|
||||||
|
conn = get_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
|
||||||
|
# Count license types
|
||||||
|
cur.execute("""
|
||||||
|
SELECT
|
||||||
|
COUNT(CASE WHEN license_type = 'full' THEN 1 END) as full_licenses,
|
||||||
|
COUNT(CASE WHEN license_type = 'test' THEN 1 END) as test_licenses,
|
||||||
|
COUNT(*) as total_licenses
|
||||||
|
FROM licenses
|
||||||
|
WHERE is_fake = false
|
||||||
|
""")
|
||||||
|
result = cur.fetchone()
|
||||||
|
|
||||||
|
# Count all licenses by type
|
||||||
|
cur.execute("""
|
||||||
|
SELECT license_type, COUNT(*) as count
|
||||||
|
FROM licenses
|
||||||
|
GROUP BY license_type
|
||||||
|
ORDER BY license_type
|
||||||
|
""")
|
||||||
|
all_types = cur.fetchall()
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
'full_licenses': result[0] if result and result[0] is not None else 0,
|
||||||
|
'test_licenses': result[1] if result and result[1] is not None else 0,
|
||||||
|
'total_non_fake': result[2] if result and result[2] is not None else 0,
|
||||||
|
'all_license_types': [{'type': row[0], 'count': row[1]} for row in all_types] if all_types else []
|
||||||
|
})
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
return jsonify({
|
||||||
|
'error': str(e)
|
||||||
|
})
|
||||||
|
finally:
|
||||||
|
if 'cur' in locals():
|
||||||
|
cur.close()
|
||||||
|
if 'conn' in locals():
|
||||||
|
conn.close()
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren