From 1841623ff6e9afdf537ccf582044092998040c7f Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Fri, 28 Aug 2026 14:40:23 +0200 Subject: [PATCH] removal of provisioning --- Website/main.py | 152 ------------ Website/templates/admin_invoices.html | 53 +--- Website/templates/my_invoices.html | 345 ++++++++++++++------------ 3 files changed, 193 insertions(+), 357 deletions(-) diff --git a/Website/main.py b/Website/main.py index 0181827..46eeffb 100644 --- a/Website/main.py +++ b/Website/main.py @@ -3200,7 +3200,6 @@ def admin_invoices(): if request.method == 'POST': action = _sanitize_text(request.form.get("action") or "", 50) invoice_id = _sanitize_text(request.form.get("invoice_id") or "", 64) - prov_id = _sanitize_text(request.form.get("prov_id") or "", 64) try: client, col = _get_collection("invoices") @@ -3238,157 +3237,6 @@ def admin_invoices(): ) flash("Rechnung angelegt.", "success") - elif action == "create_from_provision" and prov_id: - # Create an invoice from an instance request - req_client = None - try: - req_client, req_col = _get_collection("instance_requests") - prov = req_col.find_one({"_id": ObjectId(prov_id)}) - if not prov: - flash("Instanz-Anfrage nicht gefunden.", "error") - return redirect(url_for("admin_invoices")) - - username = prov.get("username") or "" - invoice_number = f"INV-{datetime.utcnow().strftime('%Y%m%d%H%M%S')}" - period = _sanitize_text(request.form.get("period") or prov.get("period") or "Sofortbuchung", 20) - due_date = _sanitize_text(request.form.get("due_date") or date.today().isoformat(), 20) - amount = float(prov.get("amount_eur") or 0.0) - - col.insert_one( - { - "username": username, - "invoice_number": invoice_number, - "period": period, - "amount_eur": amount, - "status": "Zu prüfen", - "due_date": due_date, - "pdf_path": "", - "created_at": _utc_now_iso(), - "source": "booking_payment", - "booking_flow": prov.get("booking_flow"), - "booking_package": prov.get("package"), - "booking_package_label": prov.get("package_label"), - "booking_data": prov.get("booking_data"), - "assigned_admin_username": prov.get("assigned_admin_username"), - "assigned_admin_display_name": prov.get("assigned_admin_display_name"), - "assigned_admin_email": prov.get("assigned_admin_email"), - } - ) - - req_col.update_one({"_id": prov.get("_id")}, {"$set": {"provision_status": "invoice_created", "updated_at": _utc_now_iso()}}) - flash("Rechnung aus Instanz-Anfrage erstellt.", "success") - except Exception: - flash("Fehler beim Erstellen der Rechnung aus Instanz-Anfrage.", "error") - finally: - if req_client: - req_client.close() - - elif action == "update_provision" and prov_id: - # Update provision request status (accept/reject/complete) - new_status = _sanitize_text(request.form.get("prov_status") or "", 40) - req_client = None - try: - req_client, req_col = _get_collection("instance_requests") - req_col.update_one({"_id": ObjectId(prov_id)}, {"$set": {"provision_status": new_status, "updated_at": _utc_now_iso()}}) - flash("Instanz-Anfrage aktualisiert.", "success") - except Exception: - flash("Instanz-Anfrage konnte nicht aktualisiert werden.", "error") - finally: - if req_client: - req_client.close() - elif action in {"run_provision", "retry_provision", "configure_provision"} and prov_id: - # Admin-triggered provisioning actions: start/retry/configure - req_client = None - try: - req_client, req_col = _get_collection("instance_requests") - prov = req_col.find_one({"_id": ObjectId(prov_id)}) - if not prov: - flash("Instanz-Anfrage nicht gefunden.", "error") - return redirect(url_for("admin_invoices")) - - subdomain = prov.get("subdomain") or _slugify_subdomain(prov.get("booking_data", {}).get("school_name") or prov.get("username") or prov.get("booking_number") or "prov") - provision_status = prov.get("provision_status") or "not_started" - provision_port = prov.get("provision_port") or None - provision_error = "" - provision_config_ok = prov.get("provision_config_ok") or False - - if action in {"run_provision", "retry_provision"}: - try: - port = steering.instace.new(subdomain) - except Exception as e: - port = False - provision_error = str(e) - - if port and port is not False: - provision_status = "started" - try: - provision_port = int(port) if isinstance(port, (int, str)) and str(port).isdigit() else port - except Exception: - provision_port = port - else: - provision_status = "failed" - if not provision_error: - provision_error = "Provisioning script returned failure" - - if action == "configure_provision" or (action in {"run_provision", "retry_provision"} and prov.get("package")): - module = prov.get("package") - if module in {"inventarsystem", "buecherei", "terminverwaltung", "emailversand", "starter", "advanced"}: - try: - edit_ok = steering.instace.edit(subdomain, module) - provision_config_ok = bool(edit_ok) - if not provision_config_ok and not provision_error: - provision_error = f"Module configuration failed for {module}" - except Exception as e: - provision_config_ok = False - provision_error = str(e) - - req_col.update_one({"_id": prov.get("_id")}, {"$set": {"provision_status": provision_status, "provision_port": provision_port or "", "provision_config_ok": provision_config_ok, "provision_error": provision_error, "updated_at": _utc_now_iso()}}) - flash("Provisionierungsaktion ausgeführt.", "success") - except Exception as e: - flash(f"Provisionierungsaktion fehlgeschlagen: {str(e)}", "error") - finally: - if req_client: - req_client.close() - - elif action == "delete_instance_request" and prov_id: - req_client = None - try: - req_client, req_col = _get_collection("instance_requests") - req_col.delete_one({"_id": ObjectId(prov_id)}) - flash("Instanz-Anfrage gelöscht.", "success") - except Exception: - flash("Instanz-Anfrage konnte nicht gelöscht werden.", "error") - finally: - if req_client: - req_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) - pdf_path = _save_invoice_pdf(request.files.get("invoice_pdf"), invoice_number or "invoice") - try: - amount = float(amount_text) - except ValueError: - amount = 0.0 - - update_payload = { - "invoice_number": invoice_number, - "period": _sanitize_text(request.form.get("period") or "", 20), - "status": _sanitize_text(request.form.get("status") or "Zu prüfen", 40), - "due_date": _sanitize_text(request.form.get("due_date") or "", 20), - "amount_eur": amount, - } - if pdf_path: - update_payload["pdf_path"] = pdf_path - - col.update_one( - {"_id": ObjectId(invoice_id)}, - { - "$set": update_payload - }, - ) - flash("Rechnung aktualisiert.", "success") - elif action == "delete" and invoice_id: col.delete_one({"_id": ObjectId(invoice_id)}) flash("Rechnung gelöscht.", "success") diff --git a/Website/templates/admin_invoices.html b/Website/templates/admin_invoices.html index c2bb520..efb12f6 100644 --- a/Website/templates/admin_invoices.html +++ b/Website/templates/admin_invoices.html @@ -50,7 +50,7 @@ Ansehen

{% endif %} - + {% if item.hauptvertrag_data is defined or item.get('hauptvertrag_filename') %}

Hauptvertrag (aus MongoDB): @@ -81,57 +81,6 @@ {% else %}

Noch keine Rechnungen vorhanden.

{% endfor %} - - {% if provision_requests %} -

Instanz-Anfragen

- {% for prov in provision_requests %} -
-

{{ prov.booking_number or prov.booking_number }}

-

Nutzer: {{ prov.username }} | Subdomain: {{ prov.subdomain }}

-

Paket: {{ prov.package_label or prov.package }} | Betrag: {{ '%.2f'|format(prov.amount_eur or 0) }} EUR

-

Status: {{ prov.provision_status or 'not_started' }}{% if prov.provision_error %} | Fehler: {{ prov.provision_error }}{% endif %}

-

Kontaktdaten: {{ prov.booking_data.get('contact_person', '-') }} | {{ prov.booking_data.get('contact_email', '-') }} | {{ prov.booking_data.get('billing_city', '-') }}

-
- - - - - - -
-
- - - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- {% endfor %} - {% endif %} diff --git a/Website/templates/my_invoices.html b/Website/templates/my_invoices.html index 9f82f34..b1e4e1a 100644 --- a/Website/templates/my_invoices.html +++ b/Website/templates/my_invoices.html @@ -64,16 +64,14 @@ Vertrag öffnen
{% else %} -
- - - + +
- +
{% endif %} @@ -91,8 +89,26 @@ + + + + + + {% endblock %} \ No newline at end of file