mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
37 lines
1.3 KiB
from django.utils.translation import ugettext_lazy as _
|
|
from rest_framework.serializers import ValidationError
|
|
from rest_framework import serializers
|
|
|
|
from assets.models import Database
|
|
from assets.serializers.gateway import GatewayWithAccountSecretSerializer
|
|
from .common import AssetSerializer
|
|
|
|
__all__ = ['DatabaseSerializer', 'DatabaseWithGatewaySerializer']
|
|
|
|
|
|
class DatabaseSerializer(AssetSerializer):
|
|
db_name = serializers.CharField(max_length=1024, label=_('Default database'), required=True)
|
|
|
|
class Meta(AssetSerializer.Meta):
|
|
model = Database
|
|
extra_fields = [
|
|
'db_name', 'use_ssl', 'ca_cert', 'client_cert',
|
|
'client_key', 'allow_invalid_cert'
|
|
]
|
|
fields = AssetSerializer.Meta.fields + extra_fields
|
|
|
|
def validate(self, attrs):
|
|
platform = attrs.get('platform')
|
|
db_type_required = ('mongodb', 'postgresql')
|
|
if platform and getattr(platform, 'type') in db_type_required \
|
|
and not attrs.get('db_name'):
|
|
raise ValidationError({'db_name': _('This field is required.')})
|
|
return attrs
|
|
|
|
|
|
class DatabaseWithGatewaySerializer(DatabaseSerializer):
|
|
gateway = GatewayWithAccountSecretSerializer()
|
|
|
|
class Meta(DatabaseSerializer.Meta):
|
|
fields = DatabaseSerializer.Meta.fields + ['gateway']
|