13 KiB
Template-Backend-Zuordnung - MYP System
Erstellt: 2025-06-20
Version: 1.0
System: MYP (Manage Your Printers) - Mercedes-Benz TBA Marienfelde
Überblick
Diese Dokumentation zeigt die vollständige Zuordnung zwischen HTML-Templates und Python-Backend-Verantwortlichkeiten im MYP-System. Das System verwendet eine moderne Flask-Blueprint-Architektur mit 15 Blueprint-Modulen und einer Hybrid-Struktur aus Server-Side-Rendering und JSON-APIs.
Template-Kategorien
1. Hauptanwendung Templates
dashboard.html
- Backend:
app.py→dashboard()Route - URL:
/dashboard - Berechtigungen:
@login_required - Variablen: Basis-Template-Variablen
- Zweck: Haupt-Dashboard nach Login
base.html
- Backend: Template-Basis für alle anderen Templates
- Variablen: Globale Template-Variablen (production_mode, current_user, etc.)
- Zweck: Layout-Template mit Navigation
2. Authentifizierung
login.html
- Backend:
blueprints/auth.py→login() - URL:
/auth/login - HTTP-Methoden: GET, POST
- Berechtigungen: Öffentlich
- Variablen:
{ 'error': str, # Fehlermeldung bei Login-Fehlschlag 'form': LoginForm # WTForms-Instanz } - Zweck: Benutzer-Anmeldung mit Formular-Validierung
3. Administrative Verwaltung
admin.html
- Backend:
blueprints/admin_unified.py→ Verschiedene Funktionen - URL-Muster:
/admin,/admin/users,/admin/printers,/admin/logs,/admin/system,/admin/maintenance - Berechtigungen:
@admin_required - Variablen:
{ 'active_tab': str, # 'overview', 'users', 'printers', 'logs', 'system', 'maintenance' 'users': list, # Liste aller Benutzer (nur bei users-Tab) 'printers': list, # Liste aller Drucker (nur bei printers-Tab) 'logs': list, # System-Logs (nur bei logs-Tab) 'stats': dict # System-Statistiken } - Backend-Funktionen:
admin_overview()- Hauptübersichtusers_overview()- Benutzerverwaltungprinters_overview()- Druckerverwaltunglogs_overview()- Log-Anzeigesystem_health()- System-Informationenmaintenance()- Wartungsfunktionen
admin_*.html (Legacy-Templates)
Diese Templates werden teilweise noch verwendet, aber zunehmend durch das vereinheitlichte admin.html ersetzt:
admin_guest_requests.htmladmin_add_user.htmladmin_edit_user.htmladmin_add_printer.htmladmin_edit_printer.html- Weitere administrative Templates
4. Gast-System
guest_request.html
- Backend:
blueprints/guest.py→guest_request_form() - URL:
/request - HTTP-Methoden: GET, POST
- Berechtigungen: Öffentlich
- Variablen:
{ 'form': GuestRequestForm, # WTForms für Gastanfrage 'printers': list # Verfügbare Drucker }
guest_start_job.html
- Backend:
blueprints/guest.py→guest_start_public() - URL:
/start - Berechtigungen: Öffentlich
- Zweck: Job-Start für Gäste mit OTP
guest_job_status.html
- Backend:
blueprints/guest.py→guest_job_status() - URL:
/job/<int:job_id>/status - Variablen:
{ 'job': Job, # Job-Objekt 'guest_request': GuestRequest # Gastanfrage-Objekt }
guest_status.html
- Backend:
blueprints/guest.py→guest_request_status() - URL:
/request/<int:request_id> - Variablen:
{ 'request': GuestRequest, # Gastanfrage 'job': Job, # Zugehöriger Job 'otp_code': str, # OTP-Code für Job-Start 'show_start_link': bool # Ob Start-Link angezeigt werden soll }
Weitere Gast-Templates:
guest_requests_overview.html- Übersicht aller Gastanfragenguest_requests_by_email.html- Anfragen nach E-Mail filternguest_status_check.html- Status-Prüfung für Gäste
5. Kalender-System
calendar.html
- Backend:
blueprints/calendar.py→calendar_view() - URL:
/calendar - Berechtigungen:
@login_required - Variablen:
{ 'printers': list, # Verfügbare Drucker 'can_edit': bool # Benutzer-Berechtigung zum Bearbeiten } - JavaScript-Integration: FullCalendar.js
- API-Backend: Umfangreiche Calendar-API-Endpunkte für CRUD-Operationen
6. Benutzerverwaltung
profile.html
- Backend:
blueprints/user_management.py→user_profile() - URL:
/user/profile - Berechtigungen:
@login_required - Variablen:
{ 'user': User # Aktueller Benutzer mit allen Profildaten }
settings.html
- Backend:
blueprints/user_management.py→user_settings() - URL:
/user/settings - Berechtigungen:
@login_required - Variablen:
{ 'user': User # Benutzer-Einstellungen und Präferenzen }
7. Hardware-Steuerung
tapo_control.html
- Backend:
blueprints/tapo_control.py→tapo_dashboard() - URL:
/tapo/ - Berechtigungen:
@require_permission(Permission.CONTROL_PRINTER) - Variablen:
{ 'outlets': dict, # Steckdosen-Status 'total_outlets': int, # Gesamtanzahl Steckdosen 'online_outlets': int, # Online-Steckdosen 'fixed_layout': bool # Layout-Modus }
tapo_manual_control.html
- Backend:
blueprints/tapo_control.py→manual_control() - URL:
/tapo/manual-control - Berechtigungen:
@admin_required - HTTP-Methoden: GET, POST
- Zweck: Manuelle Steckdosen-Steuerung für Administratoren
drucker_steuerung.html
- Backend:
blueprints/drucker_steuerung.py→drucker_uebersicht() - URL:
/drucker/ - Berechtigungen:
@login_required - Variablen:
{ 'drucker': list, # Drucker-Liste 'stats': dict, # Statistiken 'system_status': str, # System-Status 'seiten_titel': str, # Seitentitel 'benutzer_kann_steuern': bool,# Steuerungs-Berechtigung 'letztes_update': str, # Letztes Update 'refresh_url': str # Refresh-URL }
drucker_details.html
- Backend:
blueprints/drucker_steuerung.py→drucker_details() - URL:
/drucker/details/<int:drucker_id> - Variablen:
{ 'drucker': dict, # Drucker-Details 'stats': dict, # Drucker-Statistiken 'seiten_titel': str, # Seitentitel 'steuerungs_urls': dict, # Steuerungs-URLs 'detail_daten': dict # Detail-Informationen }
8. Energiemonitoring
energy_dashboard.html
- Backend:
blueprints/energy_monitoring.py→energy_dashboard() - URL:
/energy/ - Berechtigungen:
@login_required - Variablen:
{ 'stats': dict, # Energiestatistiken 'current_user': User, # Aktueller Benutzer 'page_title': str # Seitentitel }
energy_device_details.html
- Backend:
blueprints/energy_monitoring.py→device_details() - URL:
/energy/device/<int:device_id> - Variablen:
{ 'device': Printer, # Gerät (Drucker) 'energy_data': dict, # Energiedaten 'current_user': User, # Aktueller Benutzer 'page_title': str # Seitentitel }
9. Rechtliche Seiten
imprint.html
- Backend:
blueprints/legal_pages.py→imprint() - URL:
/impressum - Variablen:
{'title': 'Impressum'}
privacy.html
- Backend:
blueprints/legal_pages.py→privacy() - URL:
/datenschutz - Variablen:
{'title': 'Datenschutzerklärung'}
terms.html
- Backend:
blueprints/legal_pages.py→terms() - URL:
/nutzungsbedingungen - Variablen:
{'title': 'Nutzungsbedingungen'}
legal.html
- Backend:
blueprints/legal_pages.py→legal() - URL:
/rechtliches - Variablen:
{'title': 'Rechtliche Hinweise'}
system_info.html
- Backend:
blueprints/legal_pages.py→system_info() - URL:
/system-info - Variablen:
{ 'title': 'Systeminformationen', 'system': dict # System-Informationen }
10. Fehlerseiten
errors/*.html
- Backend:
app.py→ Verschiedene Error-Handler - Templates:
errors/400.html- Bad Requesterrors/401.html- Unauthorizederrors/403.html- Forbiddenerrors/404.html- Not Founderrors/405.html- Method Not Allowederrors/413.html- Payload Too Largeerrors/429.html- Rate Limit Exceedederrors/500.html- Internal Server Errorerrors/502.html- Bad Gatewayerrors/503.html- Service Unavailableerrors/505.html- HTTP Version Not Supported
API-Only Blueprints (Kein HTML-Rendering)
Diese Blueprints verwenden ausschließlich JSON-APIs ohne HTML-Templates:
printers.py
- URL-Prefix:
/api/printers - Endpunkte: Drucker-CRUD, Status-Monitoring, Tapo-Integration
- Berechtigungen: Verschiedene Permissions
jobs.py
- URL-Prefix:
/api/jobs - Endpunkte: Job-Management, Start/Pause/Resume/Finish
- Berechtigungen:
@login_required,@job_owner_required
kiosk.py
- URL-Prefix:
/api/kiosk - Endpunkte: Kiosk-Modus-Steuerung
- Berechtigungen: Teilweise
@login_required
uploads.py
- URL-Prefix:
/api - Endpunkte: Datei-Upload und -Management
- Berechtigungen: Verschiedene (
@login_required,@admin_required)
sessions.py
- URL-Prefix:
/api/session - Endpunkte: Session-Management (Heartbeat, Status, Extend)
- Berechtigungen:
@login_required
api.py
- URL-Prefix:
/api - Endpunkte: Allgemeine System-APIs (Stats, Health, Notifications)
- Berechtigungen: Verschiedene
Template-Hierarchie
Base Templates:
base.html- Haupt-Layout mit Navigationbase-production.html- Production-optimiertes Layout (falls verwendet)
Component Templates:
includes/navbar.html- Navigationcomponents/printer_status.html- Drucker-Status-Komponentemacros/ui_components.html- UI-Makros
Spezielle Templates:
static/offline.html- Offline-Seite für PWAjobs/new.html- Job-Erstellung (möglicherweise in Zukunft)
Berechtigungssystem
Dekorator-Arten:
@login_required- Standard-Anmeldung erforderlich@admin_required- Administrator-Berechtigung@require_permission(Permission.*)- Spezifische Berechtigung@job_owner_required- Job-Besitzer-Berechtigung@approver_required- Genehmiger-Berechtigung@users_admin_required- Benutzer-Administrator
Permission-Konstanten:
Permission.ADMIN- Administrative RechtePermission.CONTROL_PRINTER- Drucker-SteuerungPermission.APPROVE_JOBS- Job-Genehmigung- Weitere spezifische Berechtigungen
Datenfluss-Muster
Template-Rendering:
- Route-Handler in Blueprint erhält Request
- Datenbank-Abfrage über SQLAlchemy-Models
- Berechtigungs-Prüfung über Dekoratoren
- Template-Variablen werden zusammengestellt
- render_template() generiert HTML
- Response wird an Client gesendet
API-Endpunkte:
- Route-Handler in Blueprint erhält Request
- JSON-Daten aus Request extrahieren
- Geschäftslogik ausführen
- jsonify() generiert JSON-Response
- Response wird an Client gesendet
Entwicklungsrichtlinien
Template-Erstellung:
- Verwende
render_template()mit sprechenden Template-Namen - Übergebe strukturierte Variablen-Dictionaries
- Implementiere Fehlerbehandlung mit try-catch
- Nutze Template-Vererbung über
base.html - Dokumentiere Template-Variablen in Docstrings
API-Entwicklung:
- Verwende
jsonify()für JSON-Responses - Implementiere einheitliche Error-Response-Struktur
- Nutze HTTP-Status-Codes korrekt
- Validiere Input-Daten mit WTForms oder Marshmallow
- Logge API-Aufrufe für Debugging
Blueprint-Organisation:
- Ein Blueprint pro Funktionsbereich
- Klare URL-Präfixe verwenden
- Berechtigungen auf Blueprint-Ebene definieren
- Getrennte API- und Template-Routen wenn sinnvoll
- Dokumentiere Blueprint-Zweck in Docstring
Zusammenfassung
Das MYP-System zeigt eine moderne Flask-Architektur mit:
- 25+ HTML-Templates für Server-Side-Rendering
- 100+ API-Endpunkte für dynamische Funktionalität
- Hybrid-Architektur zwischen Templates und APIs
- Modulare Blueprint-Organisation für Wartbarkeit
- Konsistentes Berechtigungssystem für Sicherheit
- Klare Datenfluss-Muster für Nachvollziehbarkeit
Die Dokumentation bietet Entwicklern eine vollständige Referenz für die Zuordnung zwischen Frontend-Templates und Backend-Logik im MYP-System.