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)