mirror of https://github.com/jumpserver/jumpserver
perf: 关闭SFTP后,luna界面不显示相应选项 (#10186)
* perf: 关闭SFTP后,luna界面不显示相应选项 * perf: 修改默认值 * perf: 增加资产协议冗余字段,减少关联查询 * perf: 修改 * perf: 优化 * perf: 精简 * perf: 删掉空格 * perf: 修改继承类pull/10195/head
parent
1aadb760f4
commit
e12b832992
|
@ -94,6 +94,20 @@ class Protocol(models.Model):
|
|||
def __str__(self):
|
||||
return '{}/{}'.format(self.name, self.port)
|
||||
|
||||
@lazyproperty
|
||||
def asset_platform_protocol(self):
|
||||
protocols = self.asset.platform.protocols.values('name', 'public', 'setting')
|
||||
protocols = list(filter(lambda p: p['name'] == self.name, protocols))
|
||||
return protocols[0] if len(protocols) > 0 else {}
|
||||
|
||||
@property
|
||||
def setting(self):
|
||||
return self.asset_platform_protocol.get('setting', {})
|
||||
|
||||
@property
|
||||
def public(self):
|
||||
return self.asset_platform_protocol.get('public', True)
|
||||
|
||||
|
||||
class Asset(NodesRelationMixin, AbsConnectivity, JMSOrgBaseModel):
|
||||
Category = const.Category
|
||||
|
|
|
@ -22,7 +22,7 @@ __all__ = [
|
|||
'AssetSerializer', 'AssetSimpleSerializer', 'MiniAssetSerializer',
|
||||
'AssetTaskSerializer', 'AssetsTaskSerializer', 'AssetProtocolsSerializer',
|
||||
'AssetDetailSerializer', 'DetailMixin', 'AssetAccountSerializer',
|
||||
'AccountSecretSerializer',
|
||||
'AccountSecretSerializer', 'AssetProtocolsPermsSerializer'
|
||||
]
|
||||
|
||||
uuid_pattern = re.compile(r'[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
||||
|
@ -43,6 +43,11 @@ class AssetProtocolsSerializer(serializers.ModelSerializer):
|
|||
fields = ['name', 'port']
|
||||
|
||||
|
||||
class AssetProtocolsPermsSerializer(AssetProtocolsSerializer):
|
||||
class Meta(AssetProtocolsSerializer.Meta):
|
||||
fields = AssetProtocolsSerializer.Meta.fields + ['public', 'setting']
|
||||
|
||||
|
||||
class AssetLabelSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Label
|
||||
|
|
|
@ -8,7 +8,7 @@ from rest_framework import serializers
|
|||
from accounts.models import Account
|
||||
from assets.const import Category, AllTypes
|
||||
from assets.models import Node, Asset, Platform
|
||||
from assets.serializers.asset.common import AssetProtocolsSerializer
|
||||
from assets.serializers.asset.common import AssetProtocolsPermsSerializer
|
||||
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField
|
||||
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
|
||||
from perms.serializers.permission import ActionChoicesField
|
||||
|
@ -22,7 +22,7 @@ __all__ = [
|
|||
class AssetPermedSerializer(OrgResourceModelSerializerMixin):
|
||||
""" 被授权资产的数据结构 """
|
||||
platform = ObjectRelatedField(required=False, queryset=Platform.objects, label=_('Platform'))
|
||||
protocols = AssetProtocolsSerializer(many=True, required=False, label=_('Protocols'))
|
||||
protocols = AssetProtocolsPermsSerializer(many=True, required=False, label=_('Protocols'))
|
||||
category = LabeledChoiceField(choices=Category.choices, read_only=True, label=_('Category'))
|
||||
type = LabeledChoiceField(choices=AllTypes.choices(), read_only=True, label=_('Type'))
|
||||
domain = ObjectRelatedField(required=False, queryset=Node.objects, label=_('Domain'))
|
||||
|
|
Loading…
Reference in New Issue