From 8cf900f9de8ed2b1ed494f04ea6cff6ba02ad551 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 20 Jun 2024 11:10:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=94=9F=E4=BA=A7=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0003_auto_20180109_2331.py | 44 +++++++++++++++++++ apps/authentication/forms.py | 4 +- apps/perms/models/perm_node.py | 7 +++ apps/perms/utils/user_perm_tree.py | 4 +- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/apps/assets/migrations/0003_auto_20180109_2331.py b/apps/assets/migrations/0003_auto_20180109_2331.py index a4736ac20..e32b81a3f 100644 --- a/apps/assets/migrations/0003_auto_20180109_2331.py +++ b/apps/assets/migrations/0003_auto_20180109_2331.py @@ -448,6 +448,17 @@ platforms_data_json = '''[ "required": false, "default": false, "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, "default": false, "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, "default": false, "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, "default": false + }, + { + "name": "winrm", + "port": 5985, + "primary": false, + "public": false, + "required": false, + "default": false, + "setting": { + "use_ssl": false + } } ] }, diff --git a/apps/authentication/forms.py b/apps/authentication/forms.py index 05d102e8e..bb14af676 100644 --- a/apps/authentication/forms.py +++ b/apps/authentication/forms.py @@ -30,13 +30,13 @@ class UserLoginForm(forms.Form): ) auto_login = forms.BooleanField( required=False, initial=False, - widget=forms.CheckboxInput() + widget=forms.CheckboxInput(), + label=_('Auto login next') ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) auto_login_field = self.fields['auto_login'] - auto_login_field.label = _("Auto login") if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE: auto_login_field.widget = forms.HiddenInput() diff --git a/apps/perms/models/perm_node.py b/apps/perms/models/perm_node.py index b3c209e3d..620aeb1cd 100644 --- a/apps/perms/models/perm_node.py +++ b/apps/perms/models/perm_node.py @@ -46,9 +46,15 @@ class UserAssetGrantedTreeNodeRelation(FamilyMixin, JMSOrgBaseModel): @classmethod def get_node_from_with_node(cls, user, key): + """ 获取用户授权的节点的来源 + 这种情况就是因为 父节点被授权了, 找到是因为那个节点授权, 自己才会出现在授权树中 + """ 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) for node in ancestor_nodes: + # 如果是直接授权的节点 if node.key == key: return node.node_from, node if node.node_from == cls.NodeFrom.granted: @@ -107,6 +113,7 @@ class PermNode(Node): user, self.key ) self.node_from = node_from + # if node: self.granted_assets_amount = node.node_assets_amount diff --git a/apps/perms/utils/user_perm_tree.py b/apps/perms/utils/user_perm_tree.py index 391b205a5..7a6e84b93 100644 --- a/apps/perms/utils/user_perm_tree.py +++ b/apps/perms/utils/user_perm_tree.py @@ -274,7 +274,7 @@ class UserPermTreeBuildUtil(object): nodekey_assetid_mapper[key].update(asset_ids) 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: continue nodekey_assetid_mapper[node_key].add(asset_id) @@ -345,7 +345,7 @@ class UserPermTreeBuildUtil(object): @lazyproperty def perm_nodes_id_key_mapper(self): mapper = { - node.id.hex: node.key + str(node.id): node.key for key, node in self._perm_nodes_key_node_mapper.items() } return mapper