"Refactor guest blueprint templates and database schema"

This commit is contained in:
2025-05-29 16:16:03 +02:00
parent a1f9e70fd2
commit 2e306cb0df
5 changed files with 118 additions and 101 deletions

View File

@@ -4,6 +4,10 @@ import bcrypt
from datetime import datetime, timedelta from datetime import datetime, timedelta
from flask import Blueprint, render_template, request, jsonify, redirect, url_for, abort, session, flash from flask import Blueprint, render_template, request, jsonify, redirect, url_for, abort, session, flash
from flask_login import current_user, login_required from flask_login import current_user, login_required
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import StringField, TextAreaField, IntegerField, SelectField
from wtforms.validators import DataRequired, Email, Optional, NumberRange
from functools import wraps from functools import wraps
from sqlalchemy import desc from sqlalchemy import desc
from sqlalchemy.orm import joinedload from sqlalchemy.orm import joinedload
@@ -14,6 +18,19 @@ from utils.logging_config import get_logger
guest_blueprint = Blueprint('guest', __name__) guest_blueprint = Blueprint('guest', __name__)
logger = get_logger("guest") logger = get_logger("guest")
# Flask-WTF Formular für Gastanfragen
class GuestRequestForm(FlaskForm):
name = StringField('Vollständiger Name', validators=[DataRequired()])
email = StringField('E-Mail-Adresse', validators=[DataRequired(), Email()])
printer_id = SelectField('Drucker auswählen', coerce=int, validators=[Optional()])
duration_min = IntegerField('Geschätzte Dauer (Minuten)',
validators=[DataRequired(), NumberRange(min=1, max=1440)],
default=60)
reason = TextAreaField('Projektbeschreibung', validators=[Optional()])
file = FileField('3D-Datei hochladen',
validators=[Optional(), FileAllowed(['stl', 'obj', '3mf', 'amf', 'gcode'],
'3D-Dateien sind erlaubt!')])
# Hilfsfunktionen # Hilfsfunktionen
def can_approve_jobs(user_id): def can_approve_jobs(user_id):
"""Prüft, ob ein Benutzer Anfragen genehmigen darf.""" """Prüft, ob ein Benutzer Anfragen genehmigen darf."""

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -116,7 +116,7 @@
</select> </select>
</div> </div>
</div> </div>
</div> </div>
<!-- Printers Grid --> <!-- Printers Grid -->
<div id="printers-grid" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div id="printers-grid" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -131,7 +131,7 @@
</svg> </svg>
</div> </div>
<p class="text-slate-600 dark:text-slate-400">Lade Drucker...</p> <p class="text-slate-600 dark:text-slate-400">Lade Drucker...</p>
</div> </div>
<!-- Empty State --> <!-- Empty State -->
<div id="empty-state" class="dashboard-card p-8 text-center hidden"> <div id="empty-state" class="dashboard-card p-8 text-center hidden">
@@ -148,7 +148,7 @@
Ersten Drucker hinzufügen Ersten Drucker hinzufügen
</button> </button>
</div> </div>
</div> </div>
<!-- Add/Edit Printer Modal --> <!-- Add/Edit Printer Modal -->
<div id="printerModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden z-50"> <div id="printerModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden z-50">
@@ -230,7 +230,7 @@
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<!-- Printer Details Modal --> <!-- Printer Details Modal -->
<div id="printerDetailsModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden z-50"> <div id="printerDetailsModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden z-50">
@@ -255,7 +255,7 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script> <script>
let allPrinters = []; let allPrinters = [];