From fad842a8a07f57818e3c7530d2cf6cb0414a861c Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 23 Sep 2019 18:36:02 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A0=E8=B5=84=E4=BA=A7?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E8=A7=84=E5=88=99=20generate=5Ffake=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/models/asset_permission.py | 55 ++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index d724d148b..528e9ad56 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -1,12 +1,13 @@ import uuid +import logging from functools import reduce from django.db import models from django.db.models import Q from django.utils.translation import ugettext_lazy as _ -from common.utils import date_expired_default -from orgs.mixins.models import OrgModelMixin +from orgs.models import Organization +from orgs.utils import get_current_org from assets.models import Asset, SystemUser, Node from .base import BasePermission @@ -15,6 +16,7 @@ from .base import BasePermission __all__ = [ 'AssetPermission', 'Action', ] +logger = logging.getLogger(__name__) class Action: @@ -106,3 +108,52 @@ class AssetPermission(BasePermission): args = reduce(lambda x, y: x | y, args) assets = Asset.objects.filter(args).distinct() return assets + + @classmethod + def generate_fake(cls, count=100): + from ..hands import User, Node, SystemUser + import random + + org = get_current_org() + if not org or not org.is_real(): + Organization.default().change_to() + + nodes = list(Node.objects.all()) + assets = list(Asset.objects.all()) + system_users = list(SystemUser.objects.all()) + users = User.objects.filter(username='admin') + + for i in range(count): + name = "fake_perm_to_admin_{}".format(str(uuid.uuid4())[:6]) + perm = cls(name=name) + try: + perm.save() + perm.users.set(users) + if system_users and len(system_users) > 3: + _system_users = random.sample(system_users, 3) + elif system_users: + _system_users = [system_users[0]] + else: + _system_users = [] + perm.system_users.set(_system_users) + + if nodes and len(nodes) > 3: + _nodes = random.sample(nodes, 3) + else: + _nodes = [Node.default_node()] + perm.nodes.set(_nodes) + + if assets and len(assets) > 3: + _assets = random.sample(assets, 3) + elif assets: + _assets = [assets[0]] + else: + _assets = [] + perm.assets.set(_assets) + + logger.debug('Generate fake perm: %s' % perm.name) + + except Exception as e: + print('Error continue') + continue +