Kunden & Lizenzen gehen wieder

Dieser Commit ist enthalten in:
2025-06-18 01:50:39 +02:00
Ursprung 231aa4caed
Commit 6e7df47d82
4 geänderte Dateien mit 84 neuen und 136 gelöschten Zeilen

Datei anzeigen

@@ -1,6 +1,21 @@
# Fehlersuche - v2_adminpanel Refactoring
## Aktueller Stand (17.06.2025 - 11:00 Uhr)
## Aktueller Stand (18.06.2025 - 02:15 Uhr)
**ALLE KRITISCHEN PROBLEME GELÖST**
- Resources Route funktioniert jetzt korrekt
- Customers-Licenses Route funktioniert jetzt korrekt
- Container startet ohne Fehler
### Neue Fixes (18.06.2025 - 02:15 Uhr)
1. **Customers-Licenses Template Fix**:
- Problem: `url_for('api.toggle_license', license_id='')` mit leerem String
- Lösung: Hardcodierte URL verwendet: `/api/license/${licenseId}/toggle`
2. **Resources Route Fix**:
- Problem: `invalid literal for int() with base 10: ''` bei page Parameter
- Lösung: Try-except Block für sichere Konvertierung des page Parameters
## Stand vom 17.06.2025 - 11:00 Uhr
### Erfolgreiches Refactoring
- Die ursprüngliche 5000+ Zeilen große app.py wurde erfolgreich in Module aufgeteilt:
@@ -232,20 +247,18 @@ Ein detaillierter Report wurde erstellt: `ROUTING_ISSUES_REPORT.md`
## Aktuelle Probleme (18.06.2025 - 01:30 Uhr)
### 1. **Resources Route funktioniert nicht** ❌ NICHT GELÖST
**Problem**: `/resources` Route leitet auf Dashboard um mit Fehlermeldung "Fehler beim Laden der Ressourcen!"
### 1. **Resources Route funktioniert nicht** ✅ GELÖST (18.06.2025 - 02:00 Uhr)
**Problem**: `/resources` Route leitete auf Dashboard um mit Fehlermeldung "Fehler beim Laden der Ressourcen!"
**Fehlermeldungen im Log**:
1. Ursprünglich: `FEHLER: Spalte l.customer_name existiert nicht`
2. Nach Fix: `'dict object' has no attribute 'total'`
**Versuchte Lösungen**:
1. SQL-Query in `resource_routes.py` korrigiert:
- JOIN mit customers Tabelle hinzugefügt für `c.name as customer_name`
- `l.customer_name` → `c.name` in WHERE-Klausel
2. Stats Dictionary erweitert um `'total': 0` und `stats[res_type]['total'] += count`
3. Template `resources.html` angepasst: `data.quarantine` → `data.quarantined`
**Status**: Trotz aller Fixes funktioniert die Route weiterhin nicht
**Gelöst durch**:
1. Stats Dictionary korrekt initialisiert mit allen erforderlichen Feldern inkl. `available_percent`
2. Fehlende Template-Variablen hinzugefügt: `total`, `page`, `total_pages`, `sort_by`, `sort_order`, `recent_activities`, `datetime`
3. Template-Variable `search_query` → `search` korrigiert
4. Route-Namen korrigiert: `quarantine_resource` → `quarantine`, `release_resources` → `release`
5. Export-Route korrigiert: `resource_report` → `resources_report`
### 2. **URL-Generierungsfehler** ✅ GELÖST
**Problem**: Mehrere `url_for()` Aufrufe mit falschen Endpunkt-Namen
@@ -256,11 +269,14 @@ Ein detaillierter Report wurde erstellt: `ROUTING_ISSUES_REPORT.md`
- `export.licenses` → `export.export_licenses`
- `url_for()` mit leeren Parametern durch hardcodierte URLs ersetzt
### 3. **Customers-Licenses Route** ❌ NICHT GELÖST
**Problem**: `/customers-licenses` Route leitet auf Dashboard um
### 3. **Customers-Licenses Route** ✅ GELÖST (18.06.2025 - 02:00 Uhr)
**Problem**: `/customers-licenses` Route leitete auf Dashboard um
**Fehlermeldung im Log**: `ValueError: invalid literal for int() with base 10: ''`
**Ursache**: Template versucht `url_for('licenses.edit_license', license_id='')` mit leerem String aufzurufen
**Versuchte Lösungen**:
- `url_for('licenses.edit_license', license_id='')` durch hardcodierte URL ersetzt: `/license/edit/${license.id}`
- `url_for('customers.edit_customer', customer_id='')` durch hardcodierte URL ersetzt: `/customer/edit/${customerId}`
**Status**: Route funktioniert trotz Fixes nicht
**Ursache**: Template versuchte Server-seitiges Rendering von Daten, die per AJAX geladen werden sollten
**Gelöst durch**:
1. Entfernt: Server-seitiges Rendering von `selected_customer` und `licenses` im Template
2. Template zeigt jetzt nur "Wählen Sie einen Kunden aus" bis AJAX-Daten geladen sind
3. Korrigiert: `selected_customer_id` Variable entfernt
4. Export-Links funktionieren jetzt ohne `customer_id` Parameter
5. API-Endpunkt korrekt referenziert mit `url_for('customers.api_customer_licenses')`