Füge Backend-internes Frontend für API- und Druckertests hinzu

Implementiere eine Weboberfläche zur Verwaltung von Druckern, Druckaufträgen und Benutzern mit folgenden Funktionen:
- Login/Registrierungsseiten
- Dashboard mit Überblick
- Drucker-Verwaltung (Hinzufügen, Bearbeiten, Löschen)
- Auftrags-Verwaltung (Erstellen, Abbrechen, Verlängern)
- Benutzer-Verwaltung (nur Admin)
- Statistik-Dashboard

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-03-11 11:03:10 +01:00
parent c3fa6455d0
commit 29730fa880
9 changed files with 1349 additions and 1 deletions

62
backend/app.py Normal file → Executable file
View File

@@ -1,4 +1,4 @@
from flask import Flask, request, jsonify, g, redirect, url_for, session as flask_session
from flask import Flask, request, jsonify, g, redirect, url_for, session as flask_session, render_template, flash
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
@@ -725,6 +725,66 @@ def server_error(error):
app.logger.error(f'Serverfehler: {error}')
return jsonify({'message': 'Interner Serverfehler!'}), 500
# Web UI Routen
@app.route('/')
def index():
current_user = get_current_user()
if current_user:
return render_template('dashboard.html', current_user=current_user, active_page='home')
return redirect(url_for('login_page'))
@app.route('/login')
def login_page():
return render_template('login.html', active_page='login')
@app.route('/register')
def register_page():
return render_template('register.html', active_page='register')
@app.route('/logout')
def logout_page():
session_id = flask_session.get('session_id')
if session_id:
session = Session.query.get(session_id)
if session:
db.session.delete(session)
db.session.commit()
flask_session.pop('session_id', None)
flash('Sie wurden erfolgreich abgemeldet.', 'success')
return redirect(url_for('login_page'))
@app.route('/admin/printers')
def printers_page():
current_user = get_current_user()
if not current_user:
return redirect(url_for('login_page'))
return render_template('printers.html', current_user=current_user, active_page='printers')
@app.route('/admin/jobs')
def jobs_page():
current_user = get_current_user()
if not current_user:
return redirect(url_for('login_page'))
return render_template('jobs.html', current_user=current_user, active_page='jobs')
@app.route('/admin/users')
def users_page():
current_user = get_current_user()
if not current_user or current_user.role != 'admin':
flash('Sie haben keine Berechtigung, diese Seite zu besuchen.', 'danger')
return redirect(url_for('index'))
return render_template('users.html', current_user=current_user, active_page='users')
@app.route('/admin/stats')
def stats_page():
current_user = get_current_user()
if not current_user or current_user.role != 'admin':
flash('Sie haben keine Berechtigung, diese Seite zu besuchen.', 'danger')
return redirect(url_for('index'))
return render_template('stats.html', current_user=current_user, active_page='stats')
# Server starten
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')