import os
|
import sys
|
import django
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
django.setup()
|
|
from django.contrib.auth.models import Group, Permission
|
from django.contrib.contenttypes.models import ContentType
|
from apps.lunarlink.models import Project, API, Case, Config, Variables, Report
|
|
|
def create_default_groups():
|
"""
|
创建默认用户组
|
"""
|
groups_config = [
|
{
|
'name': '管理员组',
|
'permissions': ['all'],
|
'description': '拥有所有权限的管理员组'
|
},
|
{
|
'name': '开发人员组',
|
'permissions': ['view', 'add', 'change'],
|
'description': '开发人员组,可以查看、添加和修改数据'
|
},
|
{
|
'name': '测试人员组',
|
'permissions': ['view', 'add'],
|
'description': '测试人员组,可以查看和添加数据'
|
},
|
{
|
'name': '只读用户组',
|
'permissions': ['view'],
|
'description': '只读用户组,只能查看数据'
|
}
|
]
|
|
created_count = 0
|
for group_config in groups_config:
|
try:
|
group = Group.objects.get(name=group_config['name'])
|
print(f"用户组 '{group_config['name']}' 已存在,跳过创建")
|
continue
|
|
except Group.DoesNotExist:
|
try:
|
group = Group.objects.create(name=group_config['name'])
|
print(f"✓ 成功创建用户组: {group_config['name']}")
|
|
if 'all' in group_config['permissions']:
|
all_permissions = Permission.objects.all()
|
group.permissions.set(all_permissions)
|
print(f" - 已添加所有权限")
|
else:
|
for perm_type in group_config['permissions']:
|
for model in [Project, API, Case, Config, Variables, Report]:
|
content_type = ContentType.objects.get_for_model(model)
|
codename = f"{perm_type}_{model._meta.model_name}"
|
try:
|
perm = Permission.objects.get(
|
content_type=content_type,
|
codename=codename
|
)
|
group.permissions.add(perm)
|
except Permission.DoesNotExist:
|
pass
|
|
print(f" - 已添加权限: {', '.join(group_config['permissions'])}")
|
|
created_count += 1
|
|
except Exception as e:
|
print(f"✗ 创建用户组 '{group_config['name']}' 失败: {e}")
|
|
return created_count
|
|
|
def list_all_groups():
|
"""
|
列出所有用户组
|
"""
|
print("\n" + "=" * 60)
|
print("当前系统用户组列表:")
|
print("=" * 60)
|
groups = Group.objects.all()
|
if not groups:
|
print("暂无用户组")
|
else:
|
for group in groups:
|
print(f" - 组名: {group.name}")
|
print(f" 权限数量: {group.permissions.count()}")
|
print(f" 用户数量: {group.user_set.count()}")
|
print()
|
|
|
if __name__ == '__main__':
|
print("=" * 60)
|
print("开始初始化用户组数据...")
|
print("=" * 60)
|
|
count = create_default_groups()
|
print(f"\n✓ 成功创建 {count} 个用户组")
|
|
list_all_groups()
|
|
print("\n" + "=" * 60)
|
print("用户组初始化完成!")
|
print("=" * 60)
|