diff --git a/backend/app/app.py b/backend/app/app.py index 60e43c80..5ed08fbd 100644 --- a/backend/app/app.py +++ b/backend/app/app.py @@ -1418,6 +1418,12 @@ def jobs_page(): """Zeigt die Übersichtsseite für Druckaufträge an.""" return render_template("jobs.html") +@app.route("/jobs/new") +@login_required +def new_job_page(): + """Zeigt die Seite zum Erstellen neuer Druckaufträge an.""" + return render_template("jobs.html") + @app.route("/stats") @login_required def stats_page(): @@ -4343,19 +4349,19 @@ if __name__ == "__main__": ssl_context = get_ssl_context() if ssl_context: - app_logger.info("Starte HTTPS-Server auf 0.0.0.0:8443") + app_logger.info("Starte HTTPS-Server auf 0.0.0.0:443") app.run( host="0.0.0.0", - port=8443, + port=443, debug=False, ssl_context=ssl_context, threaded=True ) else: - app_logger.info("Starte HTTP-Server auf 0.0.0.0:8080") + app_logger.info("Starte HTTP-Server auf 0.0.0.0:80") app.run( host="0.0.0.0", - port=8080, + port=80, debug=False, threaded=True ) @@ -4371,9 +4377,3 @@ if __name__ == "__main__": except: pass sys.exit(1) - - try: - stop_queue_manager() - except: - pass - sys.exit(1) diff --git a/backend/app/templates/calendar.html b/backend/app/templates/calendar.html index 77a5e304..cf65bfd4 100644 --- a/backend/app/templates/calendar.html +++ b/backend/app/templates/calendar.html @@ -769,4 +769,5 @@ document.addEventListener('DOMContentLoaded', function() { }; }); +{% endblock %} {% endblock %} \ No newline at end of file diff --git a/backend/app/templates/dashboard.html b/backend/app/templates/dashboard.html index a2c66528..02170a0b 100644 --- a/backend/app/templates/dashboard.html +++ b/backend/app/templates/dashboard.html @@ -518,9 +518,9 @@ } setupEventListeners() { - // Refresh Button - const refreshBtn = document.getElementById('refreshDashboard'); - if (refreshBtn) { + // Refresh Button + const refreshBtn = document.getElementById('refreshDashboard'); + if (refreshBtn) { refreshBtn.addEventListener('click', () => { this.refreshDashboard(); }); diff --git a/backend/app/templates/guest_request.html b/backend/app/templates/guest_request.html index 44c4671c..ad55b5ff 100644 --- a/backend/app/templates/guest_request.html +++ b/backend/app/templates/guest_request.html @@ -32,55 +32,7 @@ } .focus\:border-mercedes-blue:focus { border-color: #0073ce; } - /* Enhanced Page Header */ - .guest-header { - background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); - border: 1px solid #e2e8f0; - box-shadow: - 0 10px 25px -5px rgba(0, 0, 0, 0.1), - 0 4px 6px -2px rgba(0, 0, 0, 0.05); - position: relative; - overflow: hidden; - } - - .dark .guest-header { - background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); - border-color: #334155; - } - - .guest-header::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(0, 115, 206, 0.1), transparent); - transition: left 0.5s; - } - - .guest-header:hover::before { - left: 100%; - } - - /* Enhanced Form Container */ - .guest-form-container { - background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); - border: 1px solid #e2e8f0; - box-shadow: - 0 20px 40px -12px rgba(0, 0, 0, 0.1), - 0 8px 16px -4px rgba(0, 0, 0, 0.05); - border-radius: 16px; - position: relative; - overflow: hidden; - } - - .dark .guest-form-container { - background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); - border-color: #334155; - } - - /* Enhanced Form Inputs */ + /* Enhanced Form Elements */ .mercedes-form-input { transition: all 0.2s ease; border: 1px solid #d1d5db; @@ -166,100 +118,6 @@ 75% { transform: translateX(5px); } } - /* Enhanced Info Banner */ - .info-banner { - background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); - border: 1px solid #bfdbfe; - border-radius: 12px; - position: relative; - overflow: hidden; - } - - .dark .info-banner { - background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%); - border-color: #3b82f6; - } - - .info-banner::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 4px; - height: 100%; - background: linear-gradient(180deg, #3b82f6, #1d4ed8); - } - - /* Enhanced Buttons */ - .btn-primary { - background: linear-gradient(135deg, #0073ce 0%, #1e40af 100%); - border: none; - color: white; - padding: 0.75rem 2rem; - border-radius: 12px; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.5px; - transition: all 0.3s ease; - position: relative; - overflow: hidden; - display: inline-flex; - align-items: center; - text-decoration: none; - box-shadow: 0 4px 14px 0 rgba(0, 115, 206, 0.39); - } - - .btn-primary::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); - transition: left 0.5s; - } - - .btn-primary:hover::before { - left: 100%; - } - - .btn-primary:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px 0 rgba(0, 115, 206, 0.5); - } - - .btn-secondary { - background: transparent; - border: 2px solid #0073ce; - color: #0073ce; - padding: 0.75rem 2rem; - border-radius: 12px; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.5px; - transition: all 0.3s ease; - display: inline-flex; - align-items: center; - text-decoration: none; - } - - .btn-secondary:hover { - background: #0073ce; - color: white; - transform: translateY(-2px); - } - - .dark .btn-secondary { - border-color: #60a5fa; - color: #60a5fa; - } - - .dark .btn-secondary:hover { - background: #60a5fa; - color: #1e293b; - } - /* Progress Indicators */ .progress-step { background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%); @@ -329,24 +187,6 @@ } } - /* Responsive Design */ - @media (max-width: 768px) { - .guest-form-container { - margin: 1rem; - padding: 1.5rem !important; - } - - .btn-primary, - .btn-secondary { - width: 100%; - justify-content: center; - } - - .upload-area { - height: 120px; - } - } - /* Success Animation */ .success-checkmark { animation: checkmark 0.6s ease-in-out; @@ -367,6 +207,23 @@ } } + /* Responsive Design */ + @media (max-width: 768px) { + .dashboard-card { + padding: 1rem !important; + } + + .btn-primary, + .btn-secondary { + width: 100%; + justify-content: center; + } + + .upload-area { + height: 120px; + } + } + /* Accessibility Enhancements */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { @@ -382,74 +239,54 @@ outline: 2px solid #0073ce; outline-offset: 2px; } - - /* Custom Scrollbar */ - .custom-scroll::-webkit-scrollbar { - width: 6px; - } - - .custom-scroll::-webkit-scrollbar-track { - background: #f1f5f9; - border-radius: 3px; - } - - .custom-scroll::-webkit-scrollbar-thumb { - background: #0073ce; - border-radius: 3px; - } - - .custom-scroll::-webkit-scrollbar-thumb:hover { - background: #1e40af; - } {% endblock %} {% block content %}
-
-
-
-
-
- - +
+
+
+
+ + + +
+
+

Gastanfrage

+

Stellen Sie Ihre 3D-Druckauftrag Anfrage mit Mercedes-Benz Qualitätsstandards

+
+ + -
-
-

Gastanfrage

-

Stellen Sie Ihre 3D-Druckauftrag Anfrage

-
- - - - Bearbeitungszeit: 24-48 Stunden -
+ Bearbeitungszeit: 24-48 Stunden
- +
+
-
+
+

Antrags-Fortschritt

1
@@ -472,8 +309,8 @@
-
-
+
+
@@ -498,15 +335,15 @@
- + - E-Mail-Benachrichtigung über Status + Professionelle 3D-Druck-Qualität
- + - Automatischer Druckstart nach Genehmigung + Kostenlose Beratung inklusive
@@ -514,7 +351,7 @@
-
+

Druckantrag einreichen @@ -536,10 +373,10 @@ Persönliche Angaben

- -
- -
+ +
+ +
@@ -552,20 +389,20 @@ {% endif %} {% if form and form.name.errors %}
- {% for error in form.name.errors %} + {% for error in form.name.errors %}

{{ error }}

- {% endfor %} -
- {% endif %} -
- - -
+ {% endfor %} +
+ {% endif %} +
+ + +
@@ -581,16 +418,16 @@

{% if form and form.email.errors %}
- {% for error in form.email.errors %} + {% for error in form.email.errors %}

{{ error }}

- {% endfor %} -
- {% endif %} + {% endfor %} +
+ {% endif %}
@@ -603,10 +440,10 @@ Projekt-Details - -
- -
+ +
+ +
@@ -625,24 +462,24 @@

{% if form and form.printer_id.errors %}
- {% for error in form.printer_id.errors %} + {% for error in form.printer_id.errors %}

{{ error }}

- {% endfor %} -
- {% endif %} -
- - -
+ {% endfor %} +
+ {% endif %} +
+ + +
-
+
{% if form %} {{ form.duration_min(class="mercedes-form-input block w-full px-4 py-3 pr-20", placeholder="z.B. 120", required="required") }} {% else %} @@ -652,27 +489,27 @@ {% endif %}
Minuten -
+

Ungefähre Druckzeit basierend auf der Dateigröße und Komplexität

{% if form and form.duration_min.errors %}
- {% for error in form.duration_min.errors %} + {% for error in form.duration_min.errors %}

{{ error }}

- {% endfor %} -
- {% endif %} -
+ {% endfor %} +
+ {% endif %}
+
- +
+ {% endif %}
@@ -706,8 +543,8 @@

- - + + 3D-Datei hochladen

@@ -728,8 +565,8 @@ OBJ 3MF GCODE -
+
{% if form %} {{ form.file(class="hidden", id="file-input") }} {% else %} @@ -780,21 +617,21 @@ +
-
+
@@ -839,7 +676,7 @@ }; let isSubmitting = false; - document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function() { initializeGuestRequestForm(); }); diff --git a/backend/app/templates/index.html b/backend/app/templates/index.html index 1548c2be..bb5c4488 100644 --- a/backend/app/templates/index.html +++ b/backend/app/templates/index.html @@ -603,7 +603,7 @@ Präzision, Geschwindigkeit und Zuverlässigkeit nach höchsten Standards.

- +
@@ -669,7 +669,7 @@
- +
diff --git a/backend/app/templates/login.html b/backend/app/templates/login.html index 1bd1753b..2da2aea6 100644 --- a/backend/app/templates/login.html +++ b/backend/app/templates/login.html @@ -253,15 +253,15 @@ - + + +
+

Bei MYP Platform anmelden

@@ -273,7 +273,7 @@
- + Sichere SSL-Verbindung aktiv
@@ -292,7 +292,7 @@
- +
{% if form %} {{ form.email(class="mercedes-input block w-full pl-10 pr-3 py-3 rounded-lg focus:ring-2 focus:ring-mercedes-blue focus:border-mercedes-blue", placeholder="ihre.email@mercedes-benz.com", autocomplete="email") }} @@ -301,7 +301,7 @@ class="mercedes-input block w-full pl-10 pr-3 py-3 rounded-lg focus:ring-2 focus:ring-mercedes-blue focus:border-mercedes-blue" placeholder="ihre.email@mercedes-benz.com" autocomplete="email"> {% endif %} -
+
{% if form and form.email.errors %}
{% for error in form.email.errors %} @@ -309,18 +309,18 @@ {% endfor %}
{% endif %} -
+
-
+
+
-
+
- +
{% if form %} {{ form.password(class="mercedes-input block w-full pl-10 pr-10 py-3 rounded-lg focus:ring-2 focus:ring-mercedes-blue focus:border-mercedes-blue", placeholder="Ihr Passwort", autocomplete="current-password") }} @@ -366,8 +366,8 @@ + Angemeldet bleiben + {% endif %}
@@ -381,11 +381,11 @@
@@ -450,7 +450,7 @@ const MAX_ATTEMPTS = 5; const LOCKOUT_DURATION = 15 * 60 * 1000; // 15 minutes - document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function() { initializeLoginForm(); checkRateLimit(); setupFormValidation(); @@ -588,7 +588,7 @@ document.addEventListener('keypress', function(e) { // Enter key submits form if (e.key === 'Enter' && e.target.form === document.getElementById('loginForm')) { - e.preventDefault(); + e.preventDefault(); document.getElementById('loginForm').dispatchEvent(new Event('submit')); } }); @@ -899,8 +899,8 @@ ${message} -
- `; +
+ `; input.parentNode.appendChild(errorDiv); @@ -917,8 +917,8 @@ ${message} -
- `; + + `; input.parentNode.appendChild(warningDiv); } @@ -941,7 +941,7 @@ form.reset(); const inputs = form.querySelectorAll('input'); - inputs.forEach(input => { + inputs.forEach(input => { clearError(input); }); @@ -981,9 +981,9 @@ document.body.appendChild(toast); // Animate in - setTimeout(() => { + setTimeout(() => { toast.classList.remove('translate-x-full', 'opacity-0'); - }, 100); + }, 100); // Auto-remove after 5 seconds setTimeout(() => { diff --git a/backend/app/templates/printers.html b/backend/app/templates/printers.html index e86d58f6..ff131269 100644 --- a/backend/app/templates/printers.html +++ b/backend/app/templates/printers.html @@ -451,8 +451,8 @@
- -
+ +

3D-Drucker

Live-Überwachung und Verwaltung Ihrer Produktionseinheiten

@@ -501,12 +501,12 @@
Betriebsbereit -
+
-
+
0% aller Drucker @@ -522,12 +522,12 @@
Nicht verfügbar -
+
-
+
0% aller Drucker @@ -543,12 +543,12 @@
Druckt gerade -
+
-
+
0% Auslastung @@ -566,7 +566,7 @@ Drucker registriert -
+
@@ -688,7 +688,7 @@ -
+
@@ -702,9 +702,9 @@ -
- - + + +
@@ -770,8 +770,8 @@
- - + +
@@ -835,9 +835,9 @@
- - -
+ + +

Lade Drucker-Informationen...

@@ -846,16 +846,16 @@ + + -
+ @@ -898,7 +898,7 @@
-
+

Drucker hinzufügen

@@ -913,7 +913,7 @@
- +

@@ -921,20 +921,20 @@

-
+
- * + +

Eindeutiger Name zur Identifikation

-
- -
+
+ +
+ Modell + -
- -
+
+ +
+ -
- -
+
+ +
- +

Für Netzwerk-Überwachung

-
- +
+

@@ -1056,14 +1056,14 @@
-
- + -
- + Drucker aktiv + +
+
@@ -1123,22 +1123,22 @@
- + + Speichern + +
+
+ +

- -
-
-
- + -
- + +
@@ -1213,10 +1213,10 @@
- - - - + + + +