|
|
|
@ -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
|
|
|
|
|
|
|
|
|
|