feat: Add provision deletion functionality with confirmation in admin and my invoices views

This commit is contained in:
2026-05-27 13:01:32 +02:00
parent a09e7add03
commit 3dfa68554e
3 changed files with 58 additions and 2 deletions
+46 -1
View File
@@ -2159,7 +2159,7 @@ def booking_payment():
success_text = (
f"Gesprächstermin für {selected_package} wurde an das Team gesendet."
if booking_flow == "consultation"
else f"Buchung für {selected_package} wurde erfolgreich erfasst."
else f"Buchung für {selected_package} wurde erfolgreich erfasst. Die Rechnung wird per E-Mail versendet."
)
flash(success_text, "success")
if booking_flow == "payment":
@@ -2169,6 +2169,39 @@ def booking_payment():
@app.route('/provision/delete', methods=['POST'])
@login_required
def provision_delete():
prov_id = _sanitize_text(request.form.get("prov_id") or "", 64)
if not prov_id:
flash("Ungültige Anfrage.", "error")
return redirect(url_for("my_invoices"))
prov_client = None
try:
prov_client, prov_col = _get_collection("provision_requests")
prov = prov_col.find_one({"_id": ObjectId(prov_id)})
if not prov:
flash("Provisionierungsanfrage nicht gefunden.", "error")
return redirect(url_for("my_invoices"))
# Only owner or admin can delete
if prov.get("username") != session.get("username") and not session.get("is_admin"):
flash("Keine Berechtigung zum Löschen dieser Anfrage.", "error")
return redirect(url_for("my_invoices"))
prov_col.delete_one({"_id": prov.get("_id")})
flash("Provisionierungsanfrage gelöscht.", "success")
except Exception:
flash("Provisionierungsanfrage konnte nicht gelöscht werden.", "error")
finally:
if prov_client:
prov_client.close()
return redirect(url_for("my_invoices"))
@app.route('/admin/instances', methods=['GET', 'POST'])
@admin_required
def admin_instances():
@@ -3218,6 +3251,18 @@ def admin_invoices():
if prov_client:
prov_client.close()
elif action == "delete_provision" and prov_id:
prov_client = None
try:
prov_client, prov_col = _get_collection("provision_requests")
prov_col.delete_one({"_id": ObjectId(prov_id)})
flash("Provisionierungsanfrage gelöscht.", "success")
except Exception:
flash("Provisionierungsanfrage konnte nicht gelöscht werden.", "error")
finally:
if prov_client:
prov_client.close()
elif action == "update" and invoice_id:
amount_text = _sanitize_text(request.form.get("amount_eur") or "0", 20)
invoice_number = _sanitize_text(request.form.get("invoice_number") or "", 120)