modified: web/blueprints/site_admin.py

modified:   web/templates/admin/dashboard.html
	modified:   web/templates/admin/groups.html
	modified:   web/templates/admin/users.html
This commit is contained in:
SimolZimol
2026-04-01 02:45:55 +02:00
parent e12ce8941b
commit 93999d1c0d
4 changed files with 28 additions and 9 deletions

View File

@@ -25,14 +25,20 @@ def admin_required(f):
@site_admin.route("/")
@admin_required
def dashboard():
groups = db.list_all_groups()
users = db.list_all_users()
for g in groups:
g["has_db"] = db.has_db_configured(g["id"])
try:
groups = db.list_all_groups() or []
users = db.list_all_users() or []
for g in groups:
try:
g["has_db"] = db.has_db_configured(g["id"])
except Exception:
g["has_db"] = False
except Exception:
groups, users = [], []
stats = {
"group_count": len(groups),
"user_count": len(users),
"db_configured": sum(1 for g in groups if g["has_db"]),
"db_configured": sum(1 for g in groups if g.get("has_db")),
"admin_count": sum(1 for u in users if u.get("is_site_admin")),
}
return render_template("admin/dashboard.html", groups=groups, users=users, stats=stats)
@@ -126,6 +132,19 @@ def group_member_remove(group_id, user_id):
return redirect(url_for("site_admin.group_members", group_id=group_id))
@site_admin.route("/groups/<int:group_id>/members/<int:user_id>/toggle-role", methods=["POST"])
@admin_required
def group_member_toggle_role(group_id, user_id):
member = db.get_group_member(user_id, group_id)
if member:
import json as _json
new_role = "member" if member["role"] == "admin" else "admin"
perms = member["permissions"] if isinstance(member["permissions"], dict) else (_json.loads(member["permissions"]) if member["permissions"] else {})
db.update_member(user_id, group_id, new_role, perms)
flash(f"Rolle auf '{new_role}' geändert.", "success")
return redirect(url_for("site_admin.group_members", group_id=group_id))
# ──────────────────────────────────────────────────────────────
# Nutzer verwalten
# ──────────────────────────────────────────────────────────────