• BaiJiangJie's avatar
    Asset favor (#3352) · f3dc9b88
    BaiJiangJie authored
    * [Update] 拆分filter org
    
    * [Update] 修改session支持protocol搜索
    
    * [Bugfix] 修复判断问题
    
    * [Update] 支持收藏资产
    
    * [update] 修改org resource queryset
    
    * [Update] 修改form serializer 对应的多对多字段
    
    * [Bugfix] 修复其他组织取消收藏的bug
    
    * [Update] 去掉debug信息
    
    * [Update] 修改remote app get queryset
    
    * [Update] 修改remote app get queryset
    
    * [Update] 修改没有授权时显示情况
    
    * [Bugfix] 修复组织管理员查看用户权限失败问题
    
    * [Update] 优化forms assets queryset设置
    f3dc9b88
node.py 1.45 KB
# -*- coding: utf-8 -*-
from rest_framework import serializers
from django.utils.translation import ugettext as _

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


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


class NodeSerializer(BulkOrgResourceModelSerializer):
    name = serializers.ReadOnlyField(source='value')
    value = serializers.CharField(
        required=False, allow_blank=True, allow_null=True, label=_("value")
    )

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

    def validate_value(self, data):
        if self.instance:
            instance = self.instance
            siblings = instance.get_siblings()
        else:
            instance = Node.org_root()
            siblings = instance.get_children()
        if siblings.filter(value=data):
            raise serializers.ValidationError(
                _('The same level node name cannot be the same')
            )
        return data


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

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


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