mirror of https://github.com/jumpserver/jumpserver
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# coding: utf-8
|
||
#
|
||
from rest_framework import serializers
|
||
from django.utils.translation import ugettext_lazy as _
|
||
|
||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||
from common.serializers import AdaptedBulkListSerializer
|
||
|
||
from .. import models
|
||
|
||
|
||
class DBAttrsSerializer(serializers.Serializer):
|
||
host = serializers.CharField(max_length=128, label=_('Host'))
|
||
port = serializers.IntegerField(label=_('Port'))
|
||
# 添加allow_null=True,兼容之前数据库中database字段为None的情况
|
||
database = serializers.CharField(max_length=128, required=True, allow_null=True, label=_('Database'))
|
||
|
||
|
||
class MySQLAttrsSerializer(DBAttrsSerializer):
|
||
port = serializers.IntegerField(default=3306, label=_('Port'))
|
||
|
||
|
||
class PostgreAttrsSerializer(DBAttrsSerializer):
|
||
port = serializers.IntegerField(default=5432, label=_('Port'))
|
||
|
||
|
||
class OracleAttrsSerializer(DBAttrsSerializer):
|
||
port = serializers.IntegerField(default=1521, label=_('Port'))
|
||
|
||
|
||
class MariaDBAttrsSerializer(MySQLAttrsSerializer):
|
||
pass
|
||
|
||
|
||
class DatabaseAppSerializer(BulkOrgResourceModelSerializer):
|
||
|
||
class Meta:
|
||
model = models.DatabaseApp
|
||
list_serializer_class = AdaptedBulkListSerializer
|
||
fields = [
|
||
'id', 'name', 'type', 'get_type_display', 'host', 'port',
|
||
'database', 'comment', 'created_by', 'date_created', 'date_updated',
|
||
]
|
||
read_only_fields = [
|
||
'created_by', 'date_created', 'date_updated'
|
||
'get_type_display',
|
||
]
|
||
extra_kwargs = {
|
||
'get_type_display': {'label': _('Type for display')},
|
||
}
|