[Update] 修改permisstion util

pull/1395/head
ibuler 2018-06-01 16:22:52 +08:00
parent e7c7c3a7a8
commit 482d1bb27f
5 changed files with 26 additions and 9 deletions

View File

@ -140,7 +140,7 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
node_fake = Node()
node_fake.id = asset.id
node_fake.is_node = False
node_fake.parent = node
node_fake.parent_id = node.id
node_fake.value = asset.hostname
queryset.append(node_fake)
queryset = sorted(queryset, key=lambda x: x.is_node, reverse=True)

View File

@ -5,7 +5,7 @@ import uuid
from django.db import models, transaction
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _
from common.utils import with_cache
__all__ = ['Node']
@ -166,6 +166,6 @@ class Node(models.Model):
obj, created = cls.objects.get_or_create(
key='0', defaults={"key": '0', 'value': "ROOT"}
)
print(obj)
return obj

View File

@ -64,14 +64,11 @@ class NodeSerializer(serializers.ModelSerializer):
@staticmethod
def get_parent(obj):
return obj.parent.id
return obj.parent.id if obj.is_node else obj.parent_id
@staticmethod
def get_assets_amount(obj):
if obj.is_node:
return obj.get_all_assets().count()
else:
return 0
return obj.get_all_assets().count() if obj.is_node else 0
def get_fields(self):
fields = super().get_fields()

View File

@ -16,6 +16,7 @@ import calendar
import threading
from io import StringIO
import uuid
from functools import wraps
import paramiko
import sshpubkeys
@ -395,3 +396,17 @@ class TeeObj:
def close(self):
self.file_obj.close()
def with_cache(func):
cache = {}
key = "_{}.{}".format(func.__module__, func.__name__)
@wraps(func)
def wrapper(*args, **kwargs):
cached = cache.get(key)
if cached:
return cached
res = func(*args, **kwargs)
cache[key] = res
return res
return wrapper

View File

@ -104,6 +104,11 @@ class AssetPermissionUtil:
return assets
def get_nodes_with_assets(self):
"""
返回节点并且包含资产
{"node": {"assets": set("system_user")}}
:return:
"""
assets = self.get_assets()
nodes = defaultdict(dict)
for asset, system_users in assets.items():
@ -112,7 +117,7 @@ class AssetPermissionUtil:
if asset in nodes[node]:
nodes[node][asset].update(system_users)
else:
nodes[node] = {asset: system_users}
nodes[node][asset] = system_users
return nodes