perf: 生产授权树

pull/13459/head
ibuler 2024-06-20 11:10:57 +08:00
parent afdf777386
commit 8cf900f9de
4 changed files with 55 additions and 4 deletions

View File

@ -448,6 +448,17 @@ platforms_data_json = '''[
"required": false, "required": false,
"default": false, "default": false,
"setting": {} "setting": {}
},
{
"name": "winrm",
"port": 5985,
"primary": false,
"public": false,
"required": false,
"default": false,
"setting": {
"use_ssl": false
}
} }
] ]
}, },
@ -506,6 +517,17 @@ platforms_data_json = '''[
"required": false, "required": false,
"default": false, "default": false,
"setting": {} "setting": {}
},
{
"name": "winrm",
"port": 5985,
"primary": false,
"public": false,
"required": false,
"default": false,
"setting": {
"use_ssl": false
}
} }
] ]
}, },
@ -564,6 +586,17 @@ platforms_data_json = '''[
"required": false, "required": false,
"default": false, "default": false,
"setting": {} "setting": {}
},
{
"name": "winrm",
"port": 5985,
"primary": false,
"public": false,
"required": false,
"default": false,
"setting": {
"use_ssl": false
}
} }
] ]
}, },
@ -615,6 +648,17 @@ platforms_data_json = '''[
}, },
"required": true, "required": true,
"default": false "default": false
},
{
"name": "winrm",
"port": 5985,
"primary": false,
"public": false,
"required": false,
"default": false,
"setting": {
"use_ssl": false
}
} }
] ]
}, },

View File

@ -30,13 +30,13 @@ class UserLoginForm(forms.Form):
) )
auto_login = forms.BooleanField( auto_login = forms.BooleanField(
required=False, initial=False, required=False, initial=False,
widget=forms.CheckboxInput() widget=forms.CheckboxInput(),
label=_('Auto login next')
) )
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
auto_login_field = self.fields['auto_login'] auto_login_field = self.fields['auto_login']
auto_login_field.label = _("Auto login")
if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE: if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
auto_login_field.widget = forms.HiddenInput() auto_login_field.widget = forms.HiddenInput()

View File

@ -46,9 +46,15 @@ class UserAssetGrantedTreeNodeRelation(FamilyMixin, JMSOrgBaseModel):
@classmethod @classmethod
def get_node_from_with_node(cls, user, key): def get_node_from_with_node(cls, user, key):
""" 获取用户授权的节点的来源
这种情况就是因为 父节点被授权了, 找到是因为那个节点授权 自己才会出现在授权树中
"""
ancestor_keys = set(cls.get_node_ancestor_keys(key, with_self=True)) ancestor_keys = set(cls.get_node_ancestor_keys(key, with_self=True))
# 被授权的祖先节点
# Todo 每个节点都过滤速度不慢吗 ?
ancestor_nodes = cls.objects.filter(user=user, node_key__in=ancestor_keys) ancestor_nodes = cls.objects.filter(user=user, node_key__in=ancestor_keys)
for node in ancestor_nodes: for node in ancestor_nodes:
# 如果是直接授权的节点
if node.key == key: if node.key == key:
return node.node_from, node return node.node_from, node
if node.node_from == cls.NodeFrom.granted: if node.node_from == cls.NodeFrom.granted:
@ -107,6 +113,7 @@ class PermNode(Node):
user, self.key user, self.key
) )
self.node_from = node_from self.node_from = node_from
#
if node: if node:
self.granted_assets_amount = node.node_assets_amount self.granted_assets_amount = node.node_assets_amount

View File

@ -274,7 +274,7 @@ class UserPermTreeBuildUtil(object):
nodekey_assetid_mapper[key].update(asset_ids) nodekey_assetid_mapper[key].update(asset_ids)
for asset_id, node_id in self.direct_asset_id_node_id_pairs: for asset_id, node_id in self.direct_asset_id_node_id_pairs:
node_key = self.perm_nodes_id_key_mapper.get(node_id) node_key = self.perm_nodes_id_key_mapper.get(str(node_id))
if not node_key: if not node_key:
continue continue
nodekey_assetid_mapper[node_key].add(asset_id) nodekey_assetid_mapper[node_key].add(asset_id)
@ -345,7 +345,7 @@ class UserPermTreeBuildUtil(object):
@lazyproperty @lazyproperty
def perm_nodes_id_key_mapper(self): def perm_nodes_id_key_mapper(self):
mapper = { mapper = {
node.id.hex: node.key str(node.id): node.key
for key, node in self._perm_nodes_key_node_mapper.items() for key, node in self._perm_nodes_key_node_mapper.items()
} }
return mapper return mapper