Resource Pool wieder hergestellt

Dieser Commit ist enthalten in:
2025-06-18 02:00:50 +02:00
Ursprung 6e7df47d82
Commit 2516c8a312
3 geänderte Dateien mit 24 neuen und 6 gelöschten Zeilen

Datei anzeigen

@@ -1,19 +1,27 @@
# Fehlersuche - v2_adminpanel Refactoring
## Aktueller Stand (18.06.2025 - 02:15 Uhr)
## Aktueller Stand (18.06.2025 - 02:30 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)
### Finale Fixes (18.06.2025 - 02:30 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
- Problem 1: `invalid literal for int() with base 10: ''` bei page Parameter
- Lösung 1: Try-except Block für sichere Konvertierung des page Parameters
- Problem 2: `url_for('resources.quarantine', resource_id='')` mit leerem String im Template
- Lösung 2: Hardcodierte URL verwendet: `/resources/quarantine/${resourceId}`
- Zusätzlich: Debug-Logging hinzugefügt für bessere Fehlerdiagnose
### Wichtige Erkenntnisse:
- Flask's `url_for()` kann nicht mit leeren Parametern für Integer-Routen umgehen
- Bei JavaScript-generierten URLs ist es oft besser, hardcodierte URLs zu verwenden
- Container muss nach Template-Änderungen neu gestartet werden
## Stand vom 17.06.2025 - 11:00 Uhr

Datei anzeigen

@@ -17,6 +17,9 @@ resource_bp = Blueprint('resources', __name__)
@login_required
def resources():
"""Zeigt die Ressourcenpool-Übersicht"""
import logging
logging.info("=== RESOURCES ROUTE CALLED ===")
conn = get_connection()
cur = conn.cursor()
@@ -27,6 +30,8 @@ def resources():
search_query = request.args.get('search', '')
show_test = request.args.get('show_test', 'false') == 'true'
logging.info(f"Filters: type={resource_type}, status={status_filter}, search={search_query}, show_test={show_test}")
# Basis-Query
query = """
SELECT
@@ -70,7 +75,10 @@ def resources():
cur.execute(query, params)
resources_list = []
for row in cur.fetchall():
rows = cur.fetchall()
logging.info(f"Query returned {len(rows)} rows")
for row in rows:
resources_list.append({
'id': row[0],
'resource_type': row[1],
@@ -155,7 +163,9 @@ def resources():
datetime=datetime) # For template datetime usage
except Exception as e:
import traceback
logging.error(f"Fehler beim Laden der Ressourcen: {str(e)}")
logging.error(f"Traceback: {traceback.format_exc()}")
flash('Fehler beim Laden der Ressourcen!', 'error')
return redirect(url_for('admin.dashboard'))
finally:

Datei anzeigen

@@ -843,7 +843,7 @@ function showQuarantineModal(resourceId) {
// URL mit aktuellen Filtern
const currentUrl = new URL(window.location);
const params = new URLSearchParams(currentUrl.search);
form.setAttribute('action', `{{ url_for('resources.quarantine', resource_id='') }}${resourceId}?${params.toString()}`);
form.setAttribute('action', `/resources/quarantine/${resourceId}?${params.toString()}`);
modal.show();
}