mirror of https://github.com/jumpserver/jumpserver
perf: 修改 category
parent
3011b18eaa
commit
1ca0bdf843
|
@ -1,5 +1,4 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from .common import AssetSerializer
|
from .common import AssetSerializer
|
||||||
from assets.models import DeviceInfo, Host, Database
|
from assets.models import DeviceInfo, Host, Database
|
||||||
|
|
|
@ -4,10 +4,8 @@ from rest_framework import serializers
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common.drf.serializers import JMSWritableNestedModelSerializer
|
from common.drf.serializers import JMSWritableNestedModelSerializer
|
||||||
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
|
|
||||||
from ...models import Asset, Node, Platform, Protocol, Label, Domain, Account
|
|
||||||
from ..mixin import CategoryDisplayMixin
|
|
||||||
from ..account import AccountSerializer
|
from ..account import AccountSerializer
|
||||||
|
from ...models import Asset, Node, Platform, Protocol, Label, Domain, Account
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'AssetSerializer', 'AssetSimpleSerializer', 'MiniAssetSerializer',
|
'AssetSerializer', 'AssetSimpleSerializer', 'MiniAssetSerializer',
|
||||||
|
@ -18,14 +16,15 @@ __all__ = [
|
||||||
class AssetProtocolsSerializer(serializers.ModelSerializer):
|
class AssetProtocolsSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Protocol
|
model = Protocol
|
||||||
fields = ['pk', 'name', 'port']
|
fields = ['id', 'name', 'port']
|
||||||
|
|
||||||
|
|
||||||
class AssetLabelSerializer(serializers.ModelSerializer):
|
class AssetLabelSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Label
|
model = Label
|
||||||
fields = ['pk', 'name', 'value']
|
fields = ['id', 'name', 'value']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
|
'name': {'required': False},
|
||||||
'value': {'required': False}
|
'value': {'required': False}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +32,7 @@ class AssetLabelSerializer(serializers.ModelSerializer):
|
||||||
class AssetPlatformSerializer(serializers.ModelSerializer):
|
class AssetPlatformSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Platform
|
model = Platform
|
||||||
fields = ['pk', 'name']
|
fields = ['id', 'name']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'name': {'required': False}
|
'name': {'required': False}
|
||||||
}
|
}
|
||||||
|
@ -42,35 +41,34 @@ class AssetPlatformSerializer(serializers.ModelSerializer):
|
||||||
class AssetDomainSerializer(serializers.ModelSerializer):
|
class AssetDomainSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Domain
|
model = Domain
|
||||||
fields = ['pk', 'name']
|
fields = ['id', 'name']
|
||||||
|
extra_kwargs = {
|
||||||
|
'name': {'required': False}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class AssetNodesSerializer(serializers.ModelSerializer):
|
class AssetNodesSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Node
|
model = Node
|
||||||
fields = ['pk', 'value']
|
fields = ['id', 'value']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'value': {'required': False}
|
'value': {'required': False}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AssetSerializer(CategoryDisplayMixin,
|
class AssetSerializer(JMSWritableNestedModelSerializer):
|
||||||
JMSWritableNestedModelSerializer,
|
# category = ChoiceDisplayField(choices=Category.choices, required=False)
|
||||||
OrgResourceModelSerializerMixin):
|
# type = ChoiceDisplayField(choices=AllTypes.choices, required=False)
|
||||||
domain = AssetDomainSerializer(required=False)
|
domain = AssetDomainSerializer(required=False)
|
||||||
nodes_display = serializers.ListField(
|
platform = AssetPlatformSerializer(required=False)
|
||||||
child=serializers.CharField(), label=_('Nodes name'), required=False,
|
|
||||||
)
|
|
||||||
labels = AssetLabelSerializer(many=True, required=False)
|
labels = AssetLabelSerializer(many=True, required=False)
|
||||||
nodes = AssetNodesSerializer(many=True, required=False)
|
nodes = AssetNodesSerializer(many=True, required=False)
|
||||||
platform = AssetPlatformSerializer(required=False)
|
|
||||||
accounts = AccountSerializer(many=True, required=False)
|
accounts = AccountSerializer(many=True, required=False)
|
||||||
protocols = AssetProtocolsSerializer(many=True)
|
protocols = AssetProtocolsSerializer(many=True, required=False)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
资产的数据结构
|
资产的数据结构
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Asset
|
model = Asset
|
||||||
fields_mini = [
|
fields_mini = [
|
||||||
|
@ -87,8 +85,8 @@ class AssetSerializer(CategoryDisplayMixin,
|
||||||
'nodes_display',
|
'nodes_display',
|
||||||
]
|
]
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
'category', 'category_display', 'type', 'type_display',
|
'category', 'type', 'connectivity', 'date_verified',
|
||||||
'connectivity', 'date_verified', 'created_by', 'date_created',
|
'created_by', 'date_created',
|
||||||
]
|
]
|
||||||
fields = fields_small + fields_fk + fields_m2m + read_only_fields
|
fields = fields_small + fields_fk + fields_m2m + read_only_fields
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
|
import six
|
||||||
|
|
||||||
|
from rest_framework.fields import ChoiceField
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from common.utils import decrypt_password
|
from common.utils import decrypt_password
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'ReadableHiddenField', 'EncryptedField'
|
'ReadableHiddenField', 'EncryptedField', 'ChoiceDisplayField'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,3 +38,19 @@ class EncryptedField(serializers.CharField):
|
||||||
def to_internal_value(self, value):
|
def to_internal_value(self, value):
|
||||||
value = super().to_internal_value(value)
|
value = super().to_internal_value(value)
|
||||||
return decrypt_password(value)
|
return decrypt_password(value)
|
||||||
|
|
||||||
|
|
||||||
|
class ChoiceDisplayField(ChoiceField):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ChoiceDisplayField, self).__init__(*args, **kwargs)
|
||||||
|
self.choice_mapper = {
|
||||||
|
six.text_type(key): value for key, value in self.choices.items()
|
||||||
|
}
|
||||||
|
|
||||||
|
def to_representation(self, value):
|
||||||
|
if value in ('', None):
|
||||||
|
return value
|
||||||
|
return {
|
||||||
|
'name': value,
|
||||||
|
'label': self.choice_mapper.get(six.text_type(value), value),
|
||||||
|
}
|
||||||
|
|
|
@ -114,9 +114,10 @@ class SecretReadableMixin(serializers.Serializer):
|
||||||
|
|
||||||
|
|
||||||
class JMSWritableNestedModelSerializer(WritableNestedModelSerializer):
|
class JMSWritableNestedModelSerializer(WritableNestedModelSerializer):
|
||||||
|
pass
|
||||||
def _get_related_pk(self, data, model_class):
|
#
|
||||||
pk = data.get('pk') or data.get('id') or data.get(model_class._meta.pk.attname)
|
# def _get_related_pk(self, data, model_class):
|
||||||
if pk:
|
# pk = data.get('pk') or data.get('id') or data.get(model_class._meta.pk.attname)
|
||||||
return str(pk)
|
# if pk:
|
||||||
return None
|
# return str(pk)
|
||||||
|
# return None
|
||||||
|
|
Loading…
Reference in New Issue