diff --git a/routers/admin_kunden.py b/routers/admin_kunden.py index ab9dcad..c090389 100644 --- a/routers/admin_kunden.py +++ b/routers/admin_kunden.py @@ -51,6 +51,15 @@ def detail(request: Request, organization_id: str, user: dict = Depends(require_ benutzer = fetch_benutzer_fuer_organisation(organization_id) + vorlagen_result = anode_request("GET", f"/api/v1/organizations/{organization_id}/bereitstellungsvorlagen") + bereitstellungsvorlagen = vorlagen_result.get("bereitstellungsvorlagen", []) if vorlagen_result.get("success") else [] + + workspaces_result = anode_request("GET", "/api/v1/workspaces") + workspaces = workspaces_result.get("workspaces", []) if workspaces_result.get("success") else [] + + backends_result = anode_request("GET", "/api/v1/backends") + backends = backends_result.get("backends", []) if backends_result.get("success") else [] + return templates.TemplateResponse( request, "admin/kunden_detail.html", @@ -60,10 +69,42 @@ def detail(request: Request, organization_id: str, user: dict = Depends(require_ "organization_id": organization_id, "activation_codes": activation_codes, "benutzer": benutzer, + "bereitstellungsvorlagen": bereitstellungsvorlagen, + "workspaces": workspaces, + "backends": backends, }, ) +@router.post("/{organization_id}/bereitstellungsvorlagen") +def bereitstellungsvorlage_anlegen( + organization_id: str, + workspace_id: str = Form(...), + backend_id: str = Form(...), + label: str = Form(...), + is_default: str = Form(default=""), + disk_encryption: str = Form(default=""), + root_filesystem: str = Form(default="ext4"), + secure_boot_required: str = Form(default=""), + user: dict = Depends(require_admin), +): + anode_request( + "POST", + f"/api/v1/organizations/{organization_id}/bereitstellungsvorlagen", + json={ + "workspace_id": workspace_id, + "backend_id": backend_id, + "label": label, + "is_default": is_default == "on", + "disk_encryption": disk_encryption == "on", + "root_filesystem": root_filesystem, + "secure_boot_required": secure_boot_required == "on", + }, + ) + + return RedirectResponse(f"/admin/kunden/{organization_id}", status_code=303) + + @router.post("/{organization_id}/activation-codes") def aktivierungscode_anlegen(organization_id: str, user: dict = Depends(require_admin)): anode_request("POST", f"/api/v1/organizations/{organization_id}/activation-codes") diff --git a/templates/admin/kunden_detail.html b/templates/admin/kunden_detail.html index 14ecd72..f219f83 100644 --- a/templates/admin/kunden_detail.html +++ b/templates/admin/kunden_detail.html @@ -25,6 +25,67 @@ + + Bereitstellungsvorlagen + + + BezeichnungWorkspaceBackendStandard + + {% for v in bereitstellungsvorlagen %} + + {{ v.label }} + {{ v.workspace.name }} + {{ v.backend.name }} {{ v.backend.version }} + {{ "ja" if v.is_default else "nein" }} + + {% endfor %} + + + + + Neue Bereitstellungsvorlage anlegen + + Bezeichnung + + + Workspace + + {% for w in workspaces %} + {{ w.name }}{{ " (" + w.organization_name + ")" if w.organization_name else " (global)" }} + {% endfor %} + + + Backend + + {% for b in backends %} + {{ b.name }} {{ b.version }} + {% endfor %} + + + Root-Dateisystem + + ext4 + btrfs + + + + + Als Standard für diese Organisation festlegen + + + + Festplattenverschlüsselung + + + + Secure Boot erforderlich + + + Anlegen + + + + Kundenkonten