Refactoring - Fix2
Dieser Commit ist enthalten in:
@@ -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**
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren