lizenzserver
Dieser Commit ist enthalten in:
@@ -2743,6 +2743,7 @@ def export_licenses():
|
||||
|
||||
# Alle Lizenzen mit Kundeninformationen abrufen (ohne Testdaten, außer explizit gewünscht)
|
||||
include_test = request.args.get('include_test', 'false').lower() == 'true'
|
||||
customer_id = request.args.get('customer_id', type=int)
|
||||
|
||||
query = """
|
||||
SELECT l.id, l.license_key, c.name as customer_name, c.email as customer_email,
|
||||
@@ -2757,12 +2758,23 @@ def export_licenses():
|
||||
JOIN customers c ON l.customer_id = c.id
|
||||
"""
|
||||
|
||||
# Build WHERE clause
|
||||
where_conditions = []
|
||||
params = []
|
||||
|
||||
if not include_test:
|
||||
query += " WHERE l.is_test = FALSE"
|
||||
where_conditions.append("l.is_test = FALSE")
|
||||
|
||||
if customer_id:
|
||||
where_conditions.append("l.customer_id = %s")
|
||||
params.append(customer_id)
|
||||
|
||||
if where_conditions:
|
||||
query += " WHERE " + " AND ".join(where_conditions)
|
||||
|
||||
query += " ORDER BY l.id"
|
||||
|
||||
cur.execute(query)
|
||||
cur.execute(query, params)
|
||||
|
||||
# Spaltennamen
|
||||
columns = ['ID', 'Lizenzschlüssel', 'Kunde', 'E-Mail', 'Typ',
|
||||
@@ -2963,20 +2975,40 @@ def export_customers():
|
||||
conn = get_connection()
|
||||
cur = conn.cursor()
|
||||
|
||||
# Alle Kunden mit Lizenzstatistiken (ohne Testdaten)
|
||||
cur.execute("""
|
||||
SELECT c.id, c.name, c.email, c.created_at,
|
||||
COUNT(CASE WHEN l.is_test = FALSE THEN 1 END) as total_licenses,
|
||||
COUNT(CASE WHEN l.is_active = TRUE AND l.valid_until >= CURRENT_DATE AND l.is_test = FALSE THEN 1 END) as active_licenses,
|
||||
COUNT(CASE WHEN l.valid_until < CURRENT_DATE AND l.is_test = FALSE THEN 1 END) as expired_licenses
|
||||
FROM customers c
|
||||
LEFT JOIN licenses l ON c.id = l.customer_id
|
||||
GROUP BY c.id, c.name, c.email, c.created_at
|
||||
ORDER BY c.id
|
||||
""")
|
||||
# Check if test data should be included
|
||||
include_test = request.args.get('include_test', 'false').lower() == 'true'
|
||||
|
||||
# Build query based on test data filter
|
||||
if include_test:
|
||||
# Include all customers
|
||||
query = """
|
||||
SELECT c.id, c.name, c.email, c.created_at, c.is_test,
|
||||
COUNT(l.id) as total_licenses,
|
||||
COUNT(CASE WHEN l.is_active = TRUE AND l.valid_until >= CURRENT_DATE THEN 1 END) as active_licenses,
|
||||
COUNT(CASE WHEN l.valid_until < CURRENT_DATE THEN 1 END) as expired_licenses
|
||||
FROM customers c
|
||||
LEFT JOIN licenses l ON c.id = l.customer_id
|
||||
GROUP BY c.id, c.name, c.email, c.created_at, c.is_test
|
||||
ORDER BY c.id
|
||||
"""
|
||||
else:
|
||||
# Exclude test customers and test licenses
|
||||
query = """
|
||||
SELECT c.id, c.name, c.email, c.created_at, c.is_test,
|
||||
COUNT(CASE WHEN l.is_test = FALSE THEN 1 END) as total_licenses,
|
||||
COUNT(CASE WHEN l.is_active = TRUE AND l.valid_until >= CURRENT_DATE AND l.is_test = FALSE THEN 1 END) as active_licenses,
|
||||
COUNT(CASE WHEN l.valid_until < CURRENT_DATE AND l.is_test = FALSE THEN 1 END) as expired_licenses
|
||||
FROM customers c
|
||||
LEFT JOIN licenses l ON c.id = l.customer_id
|
||||
WHERE c.is_test = FALSE
|
||||
GROUP BY c.id, c.name, c.email, c.created_at, c.is_test
|
||||
ORDER BY c.id
|
||||
"""
|
||||
|
||||
cur.execute(query)
|
||||
|
||||
# Spaltennamen
|
||||
columns = ['ID', 'Name', 'E-Mail', 'Erstellt am',
|
||||
columns = ['ID', 'Name', 'E-Mail', 'Erstellt am', 'Testdaten',
|
||||
'Lizenzen gesamt', 'Aktive Lizenzen', 'Abgelaufene Lizenzen']
|
||||
|
||||
# Daten in DataFrame
|
||||
@@ -2986,6 +3018,9 @@ def export_customers():
|
||||
# Datumsformatierung
|
||||
df['Erstellt am'] = pd.to_datetime(df['Erstellt am']).dt.strftime('%d.%m.%Y %H:%M')
|
||||
|
||||
# Testdaten formatting
|
||||
df['Testdaten'] = df['Testdaten'].replace({True: 'Ja', False: 'Nein'})
|
||||
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren