hyb
2026-01-30 7657e1b2fa251a2ea372710ad75cb395a3c0e374
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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)