jumpserver/apps/assets/serializers/node.py

73 lines
1.9 KiB
Python
Raw Normal View History

2018-02-07 15:25:15 +00:00
# -*- coding: utf-8 -*-
from rest_framework import serializers
from rest_framework_bulk.serializers import BulkListSerializer
from common.mixins import BulkSerializerMixin
from ..models import Asset, Node
from .asset import AssetGrantedSerializer
class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer):
"""
授权资产组
"""
assets_granted = AssetGrantedSerializer(many=True, read_only=True)
assets_amount = serializers.SerializerMethodField()
parent = serializers.SerializerMethodField()
2018-02-25 10:08:00 +00:00
name = serializers.SerializerMethodField()
2018-02-07 15:25:15 +00:00
class Meta:
model = Node
fields = [
2018-02-25 10:08:00 +00:00
'id', 'key', 'name', 'value', 'parent',
2018-02-07 15:25:15 +00:00
'assets_granted', 'assets_amount',
]
@staticmethod
def get_assets_amount(obj):
return len(obj.assets_granted)
2018-02-25 10:08:00 +00:00
@staticmethod
def get_name(obj):
return obj.name
2018-02-07 15:25:15 +00:00
@staticmethod
def get_parent(obj):
return obj.parent.id
class NodeSerializer(serializers.ModelSerializer):
parent = serializers.SerializerMethodField()
2018-02-25 14:36:42 +00:00
assets_amount = serializers.SerializerMethodField()
2018-02-07 15:25:15 +00:00
class Meta:
model = Node
2018-04-10 12:29:06 +00:00
fields = ['id', 'key', 'value', 'parent', 'assets_amount', 'is_asset']
2018-02-07 15:25:15 +00:00
list_serializer_class = BulkListSerializer
@staticmethod
def get_parent(obj):
return obj.parent.id
2018-02-25 14:36:42 +00:00
@staticmethod
def get_assets_amount(obj):
return obj.get_all_assets().count()
2018-02-07 15:25:15 +00:00
def get_fields(self):
fields = super().get_fields()
field = fields["key"]
field.required = False
return fields
class NodeAssetsSerializer(serializers.ModelSerializer):
assets = serializers.PrimaryKeyRelatedField(many=True, queryset=Asset.objects.all())
class Meta:
model = Node
2018-03-01 04:40:41 +00:00
fields = ['assets']
class NodeAddChildrenSerializer(serializers.Serializer):
nodes = serializers.ListField()