Resource Pool wieder hergestellt
Dieser Commit ist enthalten in:
@@ -1,19 +1,27 @@
|
|||||||
# Fehlersuche - v2_adminpanel Refactoring
|
# 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**
|
✅ **ALLE KRITISCHEN PROBLEME GELÖST**
|
||||||
- Resources Route funktioniert jetzt korrekt
|
- Resources Route funktioniert jetzt korrekt
|
||||||
- Customers-Licenses Route funktioniert jetzt korrekt
|
- Customers-Licenses Route funktioniert jetzt korrekt
|
||||||
- Container startet ohne Fehler
|
- 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**:
|
1. **Customers-Licenses Template Fix**:
|
||||||
- Problem: `url_for('api.toggle_license', license_id='')` mit leerem String
|
- Problem: `url_for('api.toggle_license', license_id='')` mit leerem String
|
||||||
- Lösung: Hardcodierte URL verwendet: `/api/license/${licenseId}/toggle`
|
- Lösung: Hardcodierte URL verwendet: `/api/license/${licenseId}/toggle`
|
||||||
|
|
||||||
2. **Resources Route Fix**:
|
2. **Resources Route Fix**:
|
||||||
- Problem: `invalid literal for int() with base 10: ''` bei page Parameter
|
- Problem 1: `invalid literal for int() with base 10: ''` bei page Parameter
|
||||||
- Lösung: Try-except Block für sichere Konvertierung des page Parameters
|
- 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
|
## Stand vom 17.06.2025 - 11:00 Uhr
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ resource_bp = Blueprint('resources', __name__)
|
|||||||
@login_required
|
@login_required
|
||||||
def resources():
|
def resources():
|
||||||
"""Zeigt die Ressourcenpool-Übersicht"""
|
"""Zeigt die Ressourcenpool-Übersicht"""
|
||||||
|
import logging
|
||||||
|
logging.info("=== RESOURCES ROUTE CALLED ===")
|
||||||
|
|
||||||
conn = get_connection()
|
conn = get_connection()
|
||||||
cur = conn.cursor()
|
cur = conn.cursor()
|
||||||
|
|
||||||
@@ -27,6 +30,8 @@ def resources():
|
|||||||
search_query = request.args.get('search', '')
|
search_query = request.args.get('search', '')
|
||||||
show_test = request.args.get('show_test', 'false') == 'true'
|
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
|
# Basis-Query
|
||||||
query = """
|
query = """
|
||||||
SELECT
|
SELECT
|
||||||
@@ -70,7 +75,10 @@ def resources():
|
|||||||
cur.execute(query, params)
|
cur.execute(query, params)
|
||||||
|
|
||||||
resources_list = []
|
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({
|
resources_list.append({
|
||||||
'id': row[0],
|
'id': row[0],
|
||||||
'resource_type': row[1],
|
'resource_type': row[1],
|
||||||
@@ -155,7 +163,9 @@ def resources():
|
|||||||
datetime=datetime) # For template datetime usage
|
datetime=datetime) # For template datetime usage
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
logging.error(f"Fehler beim Laden der Ressourcen: {str(e)}")
|
logging.error(f"Fehler beim Laden der Ressourcen: {str(e)}")
|
||||||
|
logging.error(f"Traceback: {traceback.format_exc()}")
|
||||||
flash('Fehler beim Laden der Ressourcen!', 'error')
|
flash('Fehler beim Laden der Ressourcen!', 'error')
|
||||||
return redirect(url_for('admin.dashboard'))
|
return redirect(url_for('admin.dashboard'))
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
@@ -843,7 +843,7 @@ function showQuarantineModal(resourceId) {
|
|||||||
// URL mit aktuellen Filtern
|
// URL mit aktuellen Filtern
|
||||||
const currentUrl = new URL(window.location);
|
const currentUrl = new URL(window.location);
|
||||||
const params = new URLSearchParams(currentUrl.search);
|
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();
|
modal.show();
|
||||||
}
|
}
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren