changes to the booking processin g
This commit is contained in:
+15
-19
@@ -1,4 +1,4 @@
|
||||
from flask import Flask, render_template, request, jsonify, flash, redirect, url_for, get_flashed_messages, session, send_file, after_this_request, abort, send_from_directory
|
||||
from flask import Flask, render_template, request, jsonify, flash, redirect, url_for, get_flashed_messages, session, send_file, after_this_request, abort, send_from_directory, current_app
|
||||
import os
|
||||
import json
|
||||
import atexit
|
||||
@@ -2174,7 +2174,7 @@ def background_booking_provisioning(app_instance, prov_id, subdomain, modules_to
|
||||
# 1. Set Status to In Progress
|
||||
req_col.update_one({"_id": ObjectId(prov_id)}, {"$set": {"provision_status": "in_progress"}})
|
||||
|
||||
# 2. Dynamically determine next Port and Password (Proven working logic)
|
||||
# 2. Dynamically determine next Port and Password
|
||||
existing_tenants = Instance.list()
|
||||
used_ports = [t['port'] for t in existing_tenants if 'port' in t]
|
||||
next_port = max(used_ports) + 1 if used_ports else 10002
|
||||
@@ -2186,7 +2186,6 @@ def background_booking_provisioning(app_instance, prov_id, subdomain, modules_to
|
||||
raise Exception("Tenant shell creation failed (Instance.new returned False)")
|
||||
|
||||
# 4. Enable selected Modules
|
||||
# Always enable "starter" as a baseline if needed, then the booked ones
|
||||
if "starter" not in modules_to_provision:
|
||||
Instance.edit(subdomain, "starter")
|
||||
|
||||
@@ -2249,6 +2248,7 @@ def background_booking_provisioning(app_instance, prov_id, subdomain, modules_to
|
||||
finally:
|
||||
req_client.close()
|
||||
|
||||
|
||||
@app.route('/booking/payment', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def booking_payment():
|
||||
@@ -2379,7 +2379,6 @@ def booking_payment():
|
||||
raw_base = form_data.get("school_name") or session.get("username") or booking_number
|
||||
base = _slugify_subdomain(raw_base).lower()[:51]
|
||||
|
||||
# Subdomain-Prüfung über das korrekte Instance Model
|
||||
try:
|
||||
existing_tenants = Instance.list() or []
|
||||
existing_subdomains = [
|
||||
@@ -2424,30 +2423,27 @@ def booking_payment():
|
||||
valid_modules = set(BOOKING_PACKAGE_MAP.keys())
|
||||
modules_to_provision = {pkg for pkg in package_list if pkg in valid_modules}
|
||||
|
||||
# Flask App Context für den Thread sicher abrufen
|
||||
app_obj = app
|
||||
app_obj = current_app._get_current_object()
|
||||
|
||||
user_id = session.get("user_id")
|
||||
user_email = session.get("email") or form_data.get("contact_email")
|
||||
|
||||
try:
|
||||
thread = threading.Thread(
|
||||
target=background_booking_provisioning,
|
||||
args=(app_obj, prov_id, subdomain, modules_to_provision, user_id, form_data["school_name"], user_email)
|
||||
)
|
||||
thread.start()
|
||||
print(f"[INFO] Background provisioning gestartet für Subdomain: {subdomain}")
|
||||
except Exception as thread_err:
|
||||
print(f"[ERROR] Fehler beim Starten des Background Threads: {thread_err}")
|
||||
thread = threading.Thread(
|
||||
target=background_booking_provisioning,
|
||||
args=(app_obj, prov_id, subdomain, modules_to_provision, user_id, form_data["school_name"], user_email)
|
||||
)
|
||||
thread.start()
|
||||
print(f"[INFO] Background provisioning gestartet für Subdomain: {subdomain}")
|
||||
|
||||
flash(f"Buchung für {selected_package} wurde erfasst. Die Instanz wird jetzt eingerichtet.", "success")
|
||||
return redirect(url_for("my_instance_management"))
|
||||
|
||||
except PyMongoError as pe:
|
||||
print(f"[ERROR] Database error in booking_payment: {pe}")
|
||||
flash("Buchungsanfrage konnte nicht gesendet werden. Bitte versuchen Sie es erneut.", "error")
|
||||
except Exception as e:
|
||||
print(f"[FATAL ERROR] In booking_payment Route:")
|
||||
traceback.print_exc()
|
||||
flash("Buchungsanfrage konnte nicht gesendet werden. Ein unerwarteter Fehler ist aufgetreten.", "error")
|
||||
return render_template("schnell_buchung.html", **review_data)
|
||||
|
||||
|
||||
@app.route('/instance_request/delete', methods=['POST'])
|
||||
@login_required
|
||||
def instance_request_delete():
|
||||
|
||||
Reference in New Issue
Block a user