🔧 Update: Enhance Guest Request Model with OTP Code Management

**Änderungen:**
-  Hinzugefügt: `otp_code_plain` zur `GuestRequest`-Klasse für die Speicherung des OTP-Codes im Klartext zur Anzeige für Administratoren.
-  Anpassung der API-Endpunkte in `admin_unified.py`, um den Klartext-OTP-Code anzuzeigen, wenn die Anfrage genehmigt ist und der OTP-Code aktiv ist.

**Ergebnis:**
- Verbesserte Verwaltung und Sichtbarkeit von OTP-Codes für Administratoren, was die Benutzerfreundlichkeit und Sicherheit bei der Verwaltung von Gastanfragen erhöht.

🤖 Generated with [Claude Code](https://claude.ai/code)
This commit is contained in:
2025-06-16 01:39:37 +02:00
parent ba7c65dc3c
commit 472060ab1f
101 changed files with 969 additions and 35 deletions

View File

@ -37540,3 +37540,574 @@ jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
2025-06-16 01:29:27 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:29 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:29:29 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Request: GET /jobs
2025-06-16 01:29:34 - [app] app - [INFO] INFO - Locating template 'jobs.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/jobs.html')
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:29:34 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:29:34 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Request: GET /printers
2025-06-16 01:29:35 - [app] app - [INFO] INFO - Locating template 'printers.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/printers.html')
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:29:35 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:29:35 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:29:36 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:29:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:29:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:37 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:29:37 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Request: GET /calendar
2025-06-16 01:29:40 - [app] app - [INFO] INFO - Locating template 'calendar.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/calendar.html')
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
2025-06-16 01:29:40 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:42 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:29:42 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:29:44 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard
2025-06-16 01:29:44 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:44 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:29:44 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:29:46 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:29:46 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:30:01 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-16 01:30:01 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-16 01:30:01 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
2025-06-16 01:30:01 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
2025-06-16 01:30:02 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-16 01:30:02 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
2025-06-16 01:32:45 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-16 01:32:45 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-16 01:32:45 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
2025-06-16 01:32:46 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
2025-06-16 01:32:47 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-16 01:32:47 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
2025-06-16 01:33:06 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-16 01:33:06 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-16 01:33:06 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
2025-06-16 01:33:07 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
2025-06-16 01:33:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
2025-06-16 01:33:08 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-16 01:33:08 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
2025-06-16 01:34:27 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:34:27 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:34:27 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:34:27 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: (sqlite3.OperationalError) table guest_requests has no column named otp_code_plain
[SQL: INSERT INTO guest_requests (name, email, reason, duration_min, duration_minutes, created_at, status, printer_id, otp_code, job_id, author_ip, otp_used_at, file_name, file_path, copies, processed_by, processed_at, approval_notes, rejection_reason, updated_at, approved_at, rejected_at, approved_by, rejected_by, otp_expires_at, otp_code_plain, assigned_printer_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
[parameters: ('Test Guest', 'test@example.com', 'Testing OTP system', 60, None, '2025-06-16 01:34:27.078605', 'approved', None, None, None, None, None, None, None, 1, None, None, None, None, '2025-06-16 01:34:27.078610', None, None, None, None, None, None, None)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2025-06-16 01:34:53 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:34:53 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:34:53 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:34:53 - [app] app - [INFO] INFO - 6-stelliger OTP generiert für Guest Request 3
2025-06-16 01:34:53 - [app] app - [INFO] INFO - OTP erfolgreich verifiziert für Guest Request 3
2025-06-16 01:35:09 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:35:09 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:35:09 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:35:10 - [app] app - [INFO] INFO - 6-stelliger OTP generiert für Guest Request 3
2025-06-16 01:38:03 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
2025-06-16 01:38:03 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:38:03 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-16 01:38:03 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-16 01:38:03 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-16 01:38:04 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-16 01:38:04 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-16 01:38:04 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
2025-06-16 01:38:04 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
2025-06-16 01:38:05 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-16 01:38:05 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
2025-06-16 01:38:06 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html')
2025-06-16 01:38:06 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html')
2025-06-16 01:38:06 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:06 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:06 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Request: GET /printers
2025-06-16 01:38:08 - [app] app - [INFO] INFO - Locating template 'printers.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/printers.html')
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:38:08 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:08 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:08 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system-health
2025-06-16 01:38:10 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
2025-06-16 01:38:10 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:12 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:12 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Request: GET /user/settings
2025-06-16 01:38:20 - [app] app - [INFO] INFO - Locating template 'settings.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/settings.html')
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/user/settings
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:20 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:22 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:22 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system-health
2025-06-16 01:38:25 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
2025-06-16 01:38:25 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:26 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:26 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:30 - [app] app - [DEBUG] DEBUG - Request: GET /admin/advanced-settings
2025-06-16 01:38:30 - [app] app - [INFO] INFO - Locating template 'admin_advanced_settings.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html')
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250616_013830
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/admin/advanced-settings
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - Method: GET
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - User: admin
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - Exception Type: UndefinedError
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - Exception: 'maintenance_info' is undefined
2025-06-16 01:38:30 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last):
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 326, in advanced_settings
return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
{% extends "base.html" %}
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
<span class="text-slate-900 dark:text-white font-semibold">{{ maintenance_info.last_backup }}</span>
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 867, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 852, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 88, in decorated_function
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 350, in advanced_settings
return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
{% extends "base.html" %}
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
<span class="text-slate-900 dark:text-white font-semibold">{{ maintenance_info.last_backup }}</span>
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
2025-06-16 01:38:30 - [app] app - [INFO] INFO - Locating template 'errors/500.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/errors/500.html')
2025-06-16 01:38:30 - [app] app - [DEBUG] DEBUG - Response: 500
2025-06-16 01:38:31 - [app] app - [DEBUG] DEBUG - Request: GET /admin/advanced-settings
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250616_013831
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/admin/advanced-settings
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - Method: GET
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - User: admin
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - Exception Type: UndefinedError
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - Exception: 'maintenance_info' is undefined
2025-06-16 01:38:31 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last):
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 326, in advanced_settings
return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
{% extends "base.html" %}
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
<span class="text-slate-900 dark:text-white font-semibold">{{ maintenance_info.last_backup }}</span>
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 867, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 852, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 88, in decorated_function
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 350, in advanced_settings
return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
{% extends "base.html" %}
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
<span class="text-slate-900 dark:text-white font-semibold">{{ maintenance_info.last_backup }}</span>
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
2025-06-16 01:38:31 - [app] app - [DEBUG] DEBUG - Response: 500
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Request: GET /jobs
2025-06-16 01:38:32 - [app] app - [INFO] INFO - Locating template 'jobs.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/jobs.html')
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
2025-06-16 01:38:32 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
2025-06-16 01:38:32 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:34 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:34 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Request: GET /admin/printers
2025-06-16 01:38:36 - [app] app - [INFO] INFO - Locating template 'admin.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin.html')
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system-health
2025-06-16 01:38:36 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
2025-06-16 01:38:36 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:37 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:37 - [app] app - [DEBUG] DEBUG - Response: 304
2025-06-16 01:38:41 - [app] app - [DEBUG] DEBUG - Request: GET /admin/guest-otps
2025-06-16 01:38:41 - [app] app - [INFO] INFO - Locating template 'admin_guest_otps.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
-> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_guest_otps.html')
2025-06-16 01:38:41 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/guest-requests
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/guest-requests/pending-otps
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:42 - [app] app - [DEBUG] DEBUG - Response: 200
2025-06-16 01:38:43 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
2025-06-16 01:38:43 - [app] app - [DEBUG] DEBUG - Response: 304