mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-05-08 16:16:40 +00:00
* perf: 优化 tree nodes 避免太慢 perf: 优化大量资产上的资产数生成比较慢 perf: 优化节点树 perf: 修改 tree nooooooooodes perf: 优化一些 api 比较大的问题 perf: 优化平台 api perf: 分页返回同步树 perf: 优化节点树 perf: 深度优化节点树 * perf: remove unused config --------- Co-authored-by: ibuler <ibuler@qq.com>
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
from random import sample
|
|
|
|
import forgery_py
|
|
|
|
from orgs.utils import current_org
|
|
from rbac.models import RoleBinding, Role
|
|
from users.models import *
|
|
from .base import FakeDataGenerator
|
|
|
|
|
|
class UserGroupGenerator(FakeDataGenerator):
|
|
resource = 'usergroup'
|
|
|
|
def do_generate(self, batch, batch_size):
|
|
groups = []
|
|
for i in batch:
|
|
group_name = forgery_py.name.job_title()
|
|
groups.append(UserGroup(name=group_name, org_id=self.org.id))
|
|
UserGroup.objects.bulk_create(groups, ignore_conflicts=True)
|
|
|
|
|
|
class UserGenerator(FakeDataGenerator):
|
|
resource = 'user'
|
|
roles: list
|
|
group_ids: list
|
|
|
|
def pre_generate(self):
|
|
self.group_ids = list(UserGroup.objects.all().values_list('id', flat=True))
|
|
|
|
def set_groups(self, users):
|
|
relations = []
|
|
for i in users:
|
|
groups_to_join = sample(self.group_ids, 3)
|
|
_relations = [User.groups.through(user_id=i.id, usergroup_id=gid) for gid in groups_to_join]
|
|
relations.extend(_relations)
|
|
User.groups.through.objects.bulk_create(relations, ignore_conflicts=True)
|
|
|
|
def do_generate(self, batch, batch_size):
|
|
users = []
|
|
for i in batch:
|
|
username = forgery_py.internet.user_name(True) + '-' + str(i)
|
|
email = forgery_py.internet.email_address()
|
|
u = User(
|
|
username=username,
|
|
email=email,
|
|
name=username.title(),
|
|
created_by='Faker'
|
|
)
|
|
users.append(u)
|
|
users = User.objects.bulk_create(users, ignore_conflicts=True)
|
|
self.set_groups(users)
|
|
self.set_to_org(users)
|
|
|
|
def set_to_org(self, users):
|
|
bindings = []
|
|
role = Role.objects.get(name='OrgUser')
|
|
for u in users:
|
|
b = RoleBinding(user=u, role=role, org_id=current_org.id, scope='org')
|
|
bindings.append(b)
|
|
RoleBinding.objects.bulk_create(bindings, ignore_conflicts=True)
|