perf: 修改生成假数据

pull/8322/head
ibuler 2022-05-30 16:01:57 +08:00 committed by 老广
parent 15423291cc
commit 196663f205
4 changed files with 48 additions and 7 deletions

View File

@ -15,8 +15,7 @@ django.setup()
from resources.assets import AssetsGenerator, NodesGenerator, SystemUsersGenerator, AdminUsersGenerator from resources.assets import AssetsGenerator, NodesGenerator, SystemUsersGenerator, AdminUsersGenerator
from resources.users import UserGroupGenerator, UserGenerator from resources.users import UserGroupGenerator, UserGenerator
from resources.perms import AssetPermissionGenerator from resources.perms import AssetPermissionGenerator
from resources.terminal import CommandGenerator from resources.terminal import CommandGenerator, SessionGenerator
# from resources.system import StatGenerator
resource_generator_mapper = { resource_generator_mapper = {
@ -28,6 +27,7 @@ resource_generator_mapper = {
'user_group': UserGroupGenerator, 'user_group': UserGroupGenerator,
'asset_permission': AssetPermissionGenerator, 'asset_permission': AssetPermissionGenerator,
'command': CommandGenerator, 'command': CommandGenerator,
'session': SessionGenerator
# 'stat': StatGenerator # 'stat': StatGenerator
} }

View File

@ -1,7 +1,7 @@
import random import random
from .base import FakeDataGenerator from .base import FakeDataGenerator
from system.models import * from terminal.models import *
class StatGenerator(FakeDataGenerator): class StatGenerator(FakeDataGenerator):
@ -66,4 +66,4 @@ class StatGenerator(FakeDataGenerator):
'datetime': datetime 'datetime': datetime
}) })
items.append(Stat(**node)) items.append(Stat(**node))
Stat.objects.bulk_create(items, ignore_conflicts=True) Stat.objects.bulk_create(items, ignore_conflicts=True)

View File

@ -1,5 +1,9 @@
from .base import FakeDataGenerator from .base import FakeDataGenerator
from terminal.models import Command from users.models import *
from assets.models import *
from terminal.models import *
import forgery_py
import random
class CommandGenerator(FakeDataGenerator): class CommandGenerator(FakeDataGenerator):
@ -8,3 +12,42 @@ class CommandGenerator(FakeDataGenerator):
def do_generate(self, batch, batch_size): def do_generate(self, batch, batch_size):
Command.generate_fake(len(batch), self.org) Command.generate_fake(len(batch), self.org)
class SessionGenerator(FakeDataGenerator):
resource = 'session'
users: list
assets: list
system_users: list
def pre_generate(self):
self.users = list(User.objects.all())
self.assets = list(Asset.objects.all())
self.system_users = list(SystemUser.objects.all())
def do_generate(self, batch, batch_size):
user = random.choice(self.users)
asset = random.choice(self.assets)
system_user = random.choice(self.system_users)
objects = []
now = timezone.now()
timedelta = list(range(30))
for i in batch:
delta = random.choice(timedelta)
date_start = now - timezone.timedelta(days=delta, seconds=delta * 60)
date_end = date_start + timezone.timedelta(seconds=delta * 60)
data = dict(
user=user.name,
user_id=user.id,
asset=asset.hostname,
asset_id=asset.id,
system_user=system_user.name,
system_user_id=system_user.id,
org_id=self.org.id,
date_start=date_start,
date_end=date_end,
)
objects.append(Session(**data))
creates = Session.objects.bulk_create(objects, ignore_conflicts=True)

View File

@ -24,7 +24,6 @@ class UserGenerator(FakeDataGenerator):
group_ids: list group_ids: list
def pre_generate(self): def pre_generate(self):
self.roles = list(dict(User.ROLE.choices).keys())
self.group_ids = list(UserGroup.objects.all().values_list('id', flat=True)) self.group_ids = list(UserGroup.objects.all().values_list('id', flat=True))
def set_org(self, users): def set_org(self, users):
@ -53,7 +52,6 @@ class UserGenerator(FakeDataGenerator):
username=username, username=username,
email=email, email=email,
name=username.title(), name=username.title(),
role=choice(self.roles),
created_by='Faker' created_by='Faker'
) )
users.append(u) users.append(u)