improvement of instance check

This commit is contained in:
2026-08-25 14:09:22 +02:00
parent f19a9d6c8e
commit 645de54b77
+31 -11
View File
@@ -3569,22 +3569,42 @@ def avv():
return render_template("avv.html")
@app.route('/instance_request/check_subdomain', methods=['GET'])
@login_required
def check_subdomain():
name = (request.values.get('school_name') or '').strip()
slug = _slugify_subdomain(name)
if not slug:
return jsonify({"available": False, "slug": "", "message": "Ungültiger Name für Subdomain."})
slug = request.args.get('slug', '').lower().strip()
if not slug or len(slug) < 3:
return jsonify({"available": False, "message": "Ungültiger oder zu kurzer Name"}), 400
# 1. Prüfen, ob die Subdomain bereits in den aktiven Instanzen existiert
inst_client, inst_col = _get_collection("instances")
try:
existing = steering.instace.list() or []
except Exception:
existing = []
existing_instance = inst_col.find_one({"subdomain": slug})
finally:
inst_client.close()
if slug in existing:
return jsonify({"available": False, "slug": slug, "message": "Subdomain bereits vergeben."})
return jsonify({"available": True, "slug": slug, "message": "Subdomain verfügbar."})
if existing_instance:
return jsonify({"available": False}), 200
# 2. Prüfen, ob bereits eine Anfrage (Instance Request) dafür läuft
req_client, req_col = _get_collection("instance_requests")
try:
existing_request = req_col.find_one({
"tenant_slug": slug,
"provision_status": {"$in": ["pending", "in_progress"]}
})
finally:
req_client.close()
if existing_request:
return jsonify({"available": False}), 200
# 3. Optional: Gegen reservierte System-Subdomains prüfen (z.B. www, admin, api, mail)
reserved_slugs = {"www", "admin", "api", "mail", "auth", "dashboard", "support"}
if slug in reserved_slugs:
return jsonify({"available": False}), 200
# Wenn alles frei ist:
return jsonify({"available": True}), 200
@app.route('/impressum')
def impressum():