From d4e215aeaa71605c87a5555b35cc8161cb00bd9d Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 21 Dec 2022 18:00:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dluna=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=E6=A0=91=E5=8A=A0=E8=BD=BD=E4=B8=8D=E5=87=BA?= =?UTF-8?q?=E6=9D=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user_permission/tree/node_with_asset.py | 5 +++-- apps/perms/models/perm_node.py | 18 +++++++++++++----- apps/perms/utils/user_perm.py | 1 + 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/apps/perms/api/user_permission/tree/node_with_asset.py b/apps/perms/api/user_permission/tree/node_with_asset.py index 204859f36..e67020962 100644 --- a/apps/perms/api/user_permission/tree/node_with_asset.py +++ b/apps/perms/api/user_permission/tree/node_with_asset.py @@ -96,16 +96,17 @@ class UserPermedNodeChildrenWithAssetsAsTreeApi(BaseUserNodeWithAssetAsTreeApi): """ 用户授权的节点的子节点与资产树 """ def get_nodes_assets(self): - nodes = PermNode.objects.none() - assets = Asset.objects.none() query_node_util = UserPermNodeUtil(self.user) query_asset_util = UserPermAssetUtil(self.user) node_key = self.query_node_key if not node_key: nodes = query_node_util.get_top_level_nodes() + assets = Asset.objects.none() elif node_key == PermNode.UNGROUPED_NODE_KEY: + nodes = PermNode.objects.none() assets = query_asset_util.get_ungroup_assets() elif node_key == PermNode.FAVORITE_NODE_KEY: + nodes = PermNode.objects.none() assets = query_asset_util.get_favorite_assets() else: nodes = query_node_util.get_node_children(node_key) diff --git a/apps/perms/models/perm_node.py b/apps/perms/models/perm_node.py index ed4b4b213..438cd5b2d 100644 --- a/apps/perms/models/perm_node.py +++ b/apps/perms/models/perm_node.py @@ -16,13 +16,18 @@ class NodeFrom(TextChoices): class UserAssetGrantedTreeNodeRelation(FamilyMixin, JMSOrgBaseModel): NodeFrom = NodeFrom - id = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name=_('ID')) + id = models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name=_('ID') + ) user = models.ForeignKey('users.User', db_constraint=False, on_delete=models.CASCADE) - node = models.ForeignKey('assets.Node', default=None, on_delete=models.CASCADE, - db_constraint=False, null=False, related_name='granted_node_rels') + node = models.ForeignKey( + 'assets.Node', default=None, on_delete=models.CASCADE, db_constraint=False, null=False, + related_name='granted_node_rels' + ) node_key = models.CharField(max_length=64, verbose_name=_("Key"), db_index=True) - node_parent_key = models.CharField(max_length=64, default='', verbose_name=_('Parent key'), - db_index=True) + node_parent_key = models.CharField( + max_length=64, default='', verbose_name=_('Parent key'), db_index=True + ) node_from = models.CharField(choices=NodeFrom.choices, max_length=16, db_index=True) node_assets_amount = models.IntegerField(default=0) comment = '' @@ -68,6 +73,9 @@ class PermNode(Node): 'node_from': F('granted_node_rels__node_from') } + def __str__(self): + return f'{self.name}' + def use_granted_assets_amount(self): self.assets_amount = self.granted_assets_amount diff --git a/apps/perms/utils/user_perm.py b/apps/perms/utils/user_perm.py index a5f956de8..ba7f37855 100644 --- a/apps/perms/utils/user_perm.py +++ b/apps/perms/utils/user_perm.py @@ -151,6 +151,7 @@ class UserPermNodeUtil: def get_top_level_nodes(self): nodes = self.get_special_nodes() real_nodes = self._get_indirect_perm_node_children(key='') + nodes.extend(real_nodes) if len(real_nodes) == 1: children = self.get_node_children(real_nodes[0].key) nodes.extend(children)