modified: web/blueprints/site_admin.py modified: web/roles.py modified: web/templates/admin/group_members.html
33 lines
989 B
Python
33 lines
989 B
Python
# Legacy values (admin/member) are kept for backward compatibility.
|
|
GROUP_ROLE_LABELS = {
|
|
"group_owner": "Group Owner",
|
|
"group_admin": "Group Admin",
|
|
"moderator": "Moderator",
|
|
"viewer": "Viewer",
|
|
"auditor": "Auditor",
|
|
"admin": "Admin",
|
|
"member": "Member",
|
|
}
|
|
|
|
GROUP_ROLE_OPTIONS = [
|
|
("group_owner", GROUP_ROLE_LABELS["group_owner"]),
|
|
("group_admin", GROUP_ROLE_LABELS["group_admin"]),
|
|
("moderator", GROUP_ROLE_LABELS["moderator"]),
|
|
("viewer", GROUP_ROLE_LABELS["viewer"]),
|
|
("auditor", GROUP_ROLE_LABELS["auditor"]),
|
|
]
|
|
|
|
GROUP_ROLE_SET = {role for role, _ in GROUP_ROLE_OPTIONS} | {"admin", "member"}
|
|
GROUP_MANAGEMENT_ROLES = {"group_owner", "group_admin", "admin"}
|
|
|
|
# Roles that only site admins may assign or revoke
|
|
OWNER_ONLY_ROLES = {"group_owner"}
|
|
|
|
|
|
def can_manage_group(role: str | None) -> bool:
|
|
return role in GROUP_MANAGEMENT_ROLES
|
|
|
|
|
|
def role_label(role: str | None) -> str:
|
|
return GROUP_ROLE_LABELS.get(role or "", "Unknown")
|