Refactoring - Fix2

Dieser Commit ist enthalten in:
2025-06-18 00:07:34 +02:00
Ursprung 0ec0d2c267
Commit a9cfecc699
18 geänderte Dateien mit 1412 neuen und 337 gelöschten Zeilen

Datei anzeigen

@@ -13,34 +13,35 @@
- ✅ Login-System funktioniert
- ✅ Einfache Test-Routen funktionieren (/simple-test)
- ✅ Blueprint-Registrierung funktioniert korrekt
- ✅ /test-db Route funktioniert nach Docker-Rebuild
- ✅ Kunden-Anzeige funktioniert mit Test-Daten-Filter
- ✅ Batch-Lizenzerstellung funktioniert
### Aktuelle Probleme
### Gelöste Probleme
#### 1. **404 bei /test-db Route**
**Problem**: Die Route wird nicht gefunden, obwohl sie in app.py definiert ist
**Ursache**: Docker Container hat die Code-Änderungen noch nicht übernommen
**Lösung**:
```bash
docker-compose down
docker-compose build --no-cache admin-panel
docker-compose up -d
```
#### 1. **Dict/Tuple Inkonsistenzen** ✅ GELÖST
**Problem**: Templates erwarteten Tuple-Zugriff (row[0], row[1]), aber models.py lieferte Dictionaries
**Lösung**: Alle betroffenen Templates wurden auf Dictionary-Zugriff umgestellt:
- customers.html: `customer[0]``customer.id`, `customer[1]``customer.name`, etc.
- customers_licenses.html: Komplett auf Dictionary-Zugriff umgestellt
- licenses.html, edit_license.html, sessions.html, audit_log.html, resources.html, backups.html: Alle konvertiert
#### 2. **Redirect zu /login bei /customers-licenses**
**Problem**: Beim Aufruf von /customers-licenses wird man zum Login umgeleitet
**Ursache**: Die Route ist mit `@login_required` geschützt
**Status**: Das ist korrektes Verhalten - man muss eingeloggt sein
#### 2. **Fehlende /api/customers Route** ✅ GELÖST
**Problem**: Batch-Lizenzerstellung konnte keine Kunden laden (Select2 AJAX-Fehler)
**Lösung**: api_customers() Funktion zu api_routes.py hinzugefügt
#### 3. **"dict object has no element 5" Fehler**
**Problem**: Nach erfolgreichem Login und Zugriff auf /customers-licenses kommt dieser Fehler
**Ursache**: Die Datenbankabfrage gibt ein Dictionary zurück, aber der Code erwartet ein Tuple
**Bereits implementierte Lösung**:
- customers_licenses() verwendet jetzt direkte psycopg2 Verbindung ohne Helper
- Expliziter normaler Cursor statt möglicherweise Dictionary-Cursor
#### 3. **Doppelte api_customers Funktion** ✅ GELÖST
**Problem**: AssertionError beim Start - View function mapping is overwriting existing endpoint
**Lösung**: Doppelte Definition in api_routes.py entfernt (Zeilen 833-943)
#### 4. **Fehlende Templates**
**Problem**: 404.html und 500.html fehlten
**Status**: ✅ Bereits erstellt und hinzugefügt
#### 4. **502 Bad Gateway Error** ✅ GELÖST
**Problem**: Admin-Panel war nicht erreichbar, nginx gab 502 zurück
**Ursache**: Container startete nicht wegen doppelter Route-Definition
**Lösung**: Doppelte api_customers Funktion entfernt, Container neu gebaut
#### 5. **Test-Daten Filter** ✅ GELÖST
**Problem**: Test-Daten wurden immer angezeigt, Checkbox funktionierte nicht
**Lösung**: get_customers() in models.py unterstützt jetzt show_test Parameter
## Debugging-Schritte
@@ -108,4 +109,31 @@ Die customers_licenses Funktion hat erweiterte Logging-Ausgaben:
- "=== QUERY RETURNED X ROWS ==="
- Details über Datentypen der Ergebnisse
Diese erscheinen in den Docker Logs und helfen bei der Fehlersuche.
Diese erscheinen in den Docker Logs und helfen bei der Fehlersuche.
## Zusammenfassung der Fixes
### Template-Konvertierungen (Dict statt Tuple)
Folgende Templates wurden von Tuple-Zugriff auf Dictionary-Zugriff umgestellt:
1. **customers.html**: customer[0] → customer.id, etc.
2. **customers_licenses.html**: Komplett umgestellt
3. **edit_customer.html**: customer[0] → customer.id, etc.
4. **licenses.html**: license[0] → license.id, etc.
5. **edit_license.html**: license[0] → license.id, etc.
6. **sessions.html**: session[0] → session.id, etc.
7. **audit_log.html**: log[0] → log.id, etc.
8. **resources.html**: resource[0] → resource.id, etc.
9. **backups.html**: backup[0] → backup.id, etc.
### API-Fixes
1. **api_routes.py**: Fehlende /api/customers Route hinzugefügt
2. **api_routes.py**: Doppelte api_customers Funktion entfernt
### Model-Fixes
1. **models.py**: get_customers() unterstützt jetzt show_test und search Parameter
2. **customer_routes.py**: customers() nutzt die neuen Parameter
### Status
**Alle bekannten Probleme wurden behoben**
**Admin-Panel ist vollständig funktionsfähig**
✅ **Docker Container läuft stabil**