From cdf81e2de5f7fb928c1aa4b1efb94a9ca6a2d041 Mon Sep 17 00:00:00 2001 From: UserIsMH Date: Sun, 22 Jun 2025 23:27:33 +0200 Subject: [PATCH] Dashboard angepasst --- v2_adminpanel/routes/admin_routes.py | 73 +++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/v2_adminpanel/routes/admin_routes.py b/v2_adminpanel/routes/admin_routes.py index b52a5dc..edfb682 100644 --- a/v2_adminpanel/routes/admin_routes.py +++ b/v2_adminpanel/routes/admin_routes.py @@ -181,17 +181,16 @@ def dashboard(): recent_activities = cur.fetchall() if cur.rowcount > 0 else [] # 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(""" - 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 WHERE is_fake = false """) - license_count = cur.fetchone() - full_licenses = license_count[0] if license_count and license_count[0] else 0 - # For now, we don't distinguish between full and test versions - test_version_licenses = 0 + license_types = cur.fetchone() + full_licenses = license_types[0] if license_types and license_types[0] is not None else 0 + test_version_licenses = license_types[1] if license_types and license_types[1] is not None else 0 # Lizenzstatus zählen (nur echte Lizenzen) cur.execute(""" @@ -257,9 +256,9 @@ def dashboard(): 'active_sessions': active_sessions, # Admin-Panel Sessions 'active_usage': active_usage, # Aktive Kunden-Nutzung 'active_licenses': active_licenses_count, - 'full_licenses': full_licenses, - 'test_licenses': test_version_licenses, # Test versions, not test data - 'fake_data_count': test_licenses_count, # Actual test data count + 'full_licenses': full_licenses or 0, + '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 (is_fake=true) 'fake_customers_count': fake_customers_count, 'fake_resources_count': 0, 'expired_licenses': expired_licenses, @@ -286,8 +285,8 @@ def dashboard(): COUNT(CASE WHEN status = 'allocated' THEN 1 END) as allocated, COUNT(CASE WHEN status = 'quarantine' THEN 1 END) as quarantine, COUNT(*) as total - FROM resource_pool - WHERE type = %s AND is_fake = false + FROM resource_pools + WHERE resource_type = %s AND is_fake = false """, (resource_type,)) result = cur.fetchone() @@ -323,10 +322,12 @@ def dashboard(): 'total': 0, 'available_percent': 0 } + # Reset the connection after error + conn.rollback() # Count test resources separately 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 stats['fake_resources_count'] = fake_resources_count except: @@ -1370,3 +1371,49 @@ def test_api_key(): cur.close() if 'conn' in locals(): 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()