feat: Add provision deletion functionality with confirmation in admin and my invoices views
This commit is contained in:
+46
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user