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