"feat: Implement guest request overview page"
This commit is contained in:
@@ -36,9 +36,79 @@ def approver_required(f):
|
||||
def guest_request_form():
|
||||
"""Formular für Gastanfragen anzeigen."""
|
||||
with get_cached_session() as db_session:
|
||||
printers = db_session.query(Printer).filter_by(active=True).all()
|
||||
printers = db_session.query(Printer).filter_by(active=True)
|
||||
return render_template('guest_request.html', printers=printers)
|
||||
|
||||
@guest_blueprint.route('/requests/overview', methods=['GET'])
|
||||
def guest_requests_overview():
|
||||
"""Öffentliche Übersicht aller Druckanträge mit zensierten persönlichen Daten."""
|
||||
try:
|
||||
with get_cached_session() as db_session:
|
||||
# Alle Gastanfragen laden, sortiert nach Erstellungsdatum (neueste zuerst)
|
||||
guest_requests = db_session.query(GuestRequest).order_by(desc(GuestRequest.created_at)).all()
|
||||
|
||||
# Daten für Gäste aufbereiten (persönliche Daten zensieren)
|
||||
public_requests = []
|
||||
for req in guest_requests:
|
||||
# Name zensieren: Nur ersten Buchstaben und letzten Buchstaben anzeigen
|
||||
censored_name = "***"
|
||||
if req.name and len(req.name) > 0:
|
||||
if len(req.name) == 1:
|
||||
censored_name = req.name[0] + "***"
|
||||
elif len(req.name) == 2:
|
||||
censored_name = req.name[0] + "***" + req.name[-1]
|
||||
else:
|
||||
censored_name = req.name[0] + "***" + req.name[-1]
|
||||
|
||||
# E-Mail zensieren
|
||||
censored_email = "***@***.***"
|
||||
if req.email and "@" in req.email:
|
||||
email_parts = req.email.split("@")
|
||||
if len(email_parts[0]) > 2:
|
||||
censored_email = email_parts[0][:2] + "***@" + email_parts[1]
|
||||
else:
|
||||
censored_email = "***@" + email_parts[1]
|
||||
|
||||
# Grund zensieren (nur erste 20 Zeichen anzeigen)
|
||||
censored_reason = "***"
|
||||
if req.reason:
|
||||
if len(req.reason) > 20:
|
||||
censored_reason = req.reason[:20] + "***"
|
||||
else:
|
||||
censored_reason = req.reason[:10] + "***" if len(req.reason) > 10 else "***"
|
||||
|
||||
# Drucker-Info laden
|
||||
printer_name = "Unbekannt"
|
||||
if req.printer:
|
||||
printer_name = req.printer.name
|
||||
|
||||
# Job-Status laden, falls vorhanden
|
||||
job_status = None
|
||||
if req.job_id:
|
||||
job = db_session.query(Job).filter_by(id=req.job_id).first()
|
||||
if job:
|
||||
job_status = job.status
|
||||
|
||||
public_requests.append({
|
||||
"id": req.id,
|
||||
"name": censored_name,
|
||||
"email": censored_email,
|
||||
"reason": censored_reason,
|
||||
"duration_min": req.duration_min,
|
||||
"created_at": req.created_at,
|
||||
"status": req.status,
|
||||
"printer_name": printer_name,
|
||||
"job_status": job_status
|
||||
})
|
||||
|
||||
logger.info(f"Öffentliche Druckanträge-Übersicht aufgerufen - {len(public_requests)} Einträge")
|
||||
|
||||
return render_template('guest_requests_overview.html', requests=public_requests)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Laden der öffentlichen Druckanträge-Übersicht: {str(e)}")
|
||||
return render_template('guest_requests_overview.html', requests=[], error="Fehler beim Laden der Daten")
|
||||
|
||||
@guest_blueprint.route('/request/<int:request_id>', methods=['GET'])
|
||||
def guest_request_status(request_id):
|
||||
"""Status einer Gastanfrage anzeigen."""
|
||||
|
Reference in New Issue
Block a user