• BaiJiangJie's avatar
    [Feature] 添加功能:数据库应用 (#3551) · 16f727c6
    BaiJiangJie authored
    * [Update] 添加数据库应用Model
    
    * [Update] 添加数据库应用ViewSet
    
    * [Update] 添加数据库应用HTML
    
    * [Update] 更新数据库应用迁移文件
    
    * [Update] 添加数据库应用授权Model
    
    * [Update] 添加数据库应用授权ViewSet(待续)
    
    * [Update] 添加数据库应用授权ViewSet(完结)
    
    * [Update] 添加数据库应用授权View(待续)
    
    * [Update] 添加数据库应用授权View(待续2)
    
    * [Update] 修改远程应用授权View(小问题)
    
    * [Update] 添加数据库应用授权View(待续3)
    
    * [Update] 添加数据库应用授权View(完结)
    
    * [Update] 添加数据库应用授权相关API
    
    * [Update] 添加数据库应用View(用户页面)
    
    * [Update] 修改数据库应用授权Model/View/API(系统用户)
    
    * [Update] 修改系统用户Model/View(添加mysql协议)
    
    * [Update] 修改用户页面(我的应用)
    
    * [Update] 添加迁移文件
    
    * [Update] 添加迁移文件2
    
    * [Update] 续添加迁移文件2(Model更改)
    
    * [Update] 修改系统用户序列类(mysql协议自动生成密码问题)
    
    * [Update] 修改数据库应用/资产等授权序列类
    
    * [Update] 修改命令列表/会话详情命令溢出
    
    * [Update] 修改授权详情中添加系统用户的过滤
    
    * [Update] 修改列表动作的宽度
    Unverified
    16f727c6
database_app_permission_relation.py 2.93 KB
# coding: utf-8
#
from rest_framework import serializers

from applications.models import DatabaseApp
from common.mixins import BulkSerializerMixin
from common.serializers import AdaptedBulkListSerializer

from .. import models

__all__ = [
    'DatabaseAppPermissionUserRelationSerializer',
    'DatabaseAppPermissionUserGroupRelationSerializer',
    'DatabaseAppPermissionAllUserSerializer',
    'DatabaseAppPermissionDatabaseAppRelationSerializer',
    'DatabaseAppPermissionAllDatabaseAppSerializer',
    'DatabaseAppPermissionSystemUserRelationSerializer',
]


class RelationMixin(BulkSerializerMixin, serializers.Serializer):
    databaseapppermission_display = serializers.ReadOnlyField()

    def get_field_names(self, declared_fields, info):
        fields = super().get_field_names(declared_fields, info)
        fields.extend(['databaseapppermission', "databaseapppermission_display"])
        return fields

    class Meta:
        list_serializer_class = AdaptedBulkListSerializer


class DatabaseAppPermissionUserRelationSerializer(RelationMixin, serializers.ModelSerializer):
    user_display = serializers.ReadOnlyField()

    class Meta(RelationMixin.Meta):
        model = models.DatabaseAppPermission.users.through
        fields = [
            'id', 'user', 'user_display',
        ]


class DatabaseAppPermissionUserGroupRelationSerializer(RelationMixin, serializers.ModelSerializer):
    usergroup_display = serializers.ReadOnlyField()

    class Meta(RelationMixin.Meta):
        model = models.DatabaseAppPermission.user_groups.through
        fields = [
            'id', 'usergroup', "usergroup_display",
        ]


class DatabaseAppPermissionAllUserSerializer(serializers.Serializer):
    user = serializers.UUIDField(read_only=True, source='id')
    user_display = serializers.SerializerMethodField()

    class Meta:
        only_fields = ['id', 'username', 'name']

    @staticmethod
    def get_user_display(obj):
        return str(obj)


class DatabaseAppPermissionDatabaseAppRelationSerializer(RelationMixin, serializers.ModelSerializer):
    databaseapp_display = serializers.ReadOnlyField()

    class Meta(RelationMixin.Meta):
        model = models.DatabaseAppPermission.database_apps.through
        fields = [
            'id', "databaseapp", "databaseapp_display",
        ]


class DatabaseAppPermissionAllDatabaseAppSerializer(serializers.Serializer):
    databaseapp = serializers.UUIDField(read_only=True, source='id')
    databaseapp_display = serializers.SerializerMethodField()

    class Meta:
        only_fields = ['id', 'name']

    @staticmethod
    def get_databaseapp_display(obj):
        return str(obj)


class DatabaseAppPermissionSystemUserRelationSerializer(RelationMixin, serializers.ModelSerializer):
    systemuser_display = serializers.ReadOnlyField()

    class Meta(RelationMixin.Meta):
        model = models.DatabaseAppPermission.system_users.through
        fields = [
            'id', 'systemuser', 'systemuser_display'
        ]