• BaiJiangJie's avatar
    Perf (#2929) · 5f9f970a
    BaiJiangJie authored
    * [Update] 优化性能
    
    * [Update] 修改assets
    
    * [Update] 优化处理
    
    * [Update] Youhua
    
    * [Update] 修改ungroup
    
    * [Update] 修改perms的api地址,去掉sysuser adminuser的可连接性
    
    * [Update] 修改perms urls兼容
    
    * [Update] 修改分类
    
    * [Update] 修改信号
    
    * [Update] 优化获取授权资产
    
    * [Update] 添加注释 (#2928)
    
    * [update] 去掉nodes 的部分字段
    
    * [Update] 删除不用的代码
    
    * [Update] 拆分users
    
    * [Update] 修改用户的属性
    5f9f970a
node.py 1.34 KB
# -*- coding: utf-8 -*-
from rest_framework import serializers
from django.utils.translation import ugettext as _

from orgs.mixins import BulkOrgResourceModelSerializer
from ..models import Asset, Node


__all__ = [
    'NodeSerializer', "NodeAddChildrenSerializer",
    "NodeAssetsSerializer",
]


class NodeSerializer(BulkOrgResourceModelSerializer):
    assets_amount = serializers.IntegerField(read_only=True)

    class Meta:
        model = Node
        only_fields = ['id', 'key', 'value', 'org_id']
        fields = only_fields + ['assets_amount']
        read_only_fields = [
            'key', 'assets_amount', 'org_id',
        ]

    def validate_value(self, data):
        instance = self.instance if self.instance else Node.root()
        children = instance.parent.get_children()
        children_values = [node.value for node in children if node != instance]
        if data in children_values:
            raise serializers.ValidationError(
                _('The same level node name cannot be the same')
            )
        return data


class NodeAssetsSerializer(serializers.ModelSerializer):
    assets = serializers.PrimaryKeyRelatedField(many=True, queryset=Asset.objects.all())

    class Meta:
        model = Node
        fields = ['assets']


class NodeAddChildrenSerializer(serializers.Serializer):
    nodes = serializers.ListField()