feat: initialize deployment governance

This commit is contained in:
hailin
2026-07-01 14:29:24 +08:00
parent 9fc8101f96
commit 85f3fd9af4
12 changed files with 215 additions and 37 deletions

View File

@@ -7,6 +7,14 @@ from apps.accounts.menus import DEFAULT_MENUS
from apps.accounts.models import MenuItem, UserGroup
from apps.accounts.permissions import DEFAULT_GROUPS, PERMISSIONS
LEGACY_ROLE_RENAMES = {
"System Admin": "系统管理员",
"Knowledge Admin": "知识库管理员",
"Support Engineer": "技术支持",
"Requester": "普通建单人",
"Auditor": "只读审计员",
}
def seed_permissions() -> dict[str, Permission]:
content_type, _ = ContentType.objects.get_or_create(
@@ -29,11 +37,26 @@ def seed_permissions() -> dict[str, Permission]:
def seed_roles(permissions_by_codename: dict[str, Permission]) -> None:
migrate_legacy_roles()
for group_name, codenames in DEFAULT_GROUPS.items():
group, _ = Group.objects.get_or_create(name=group_name)
group.permissions.set(permissions_by_codename[codename] for codename in codenames)
def migrate_legacy_roles() -> None:
for legacy_name, target_name in LEGACY_ROLE_RENAMES.items():
legacy_group = Group.objects.filter(name=legacy_name).first()
if legacy_group is None:
continue
target_group = Group.objects.filter(name=target_name).first()
if target_group is None:
legacy_group.name = target_name
legacy_group.save(update_fields=["name"])
continue
target_group.user_set.add(*legacy_group.user_set.all())
legacy_group.delete()
def seed_user_groups() -> None:
UserGroup.objects.update_or_create(
code="default",