feat: initialize deployment governance
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user