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.
jumpserver/apps/assets/serializers/gateway.py

37 lines
1.2 KiB

# -*- coding: utf-8 -*-
#
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from .asset.common import AccountSecretSerializer
from .asset.host import HostSerializer
from ..models import Gateway, Asset
__all__ = ['GatewaySerializer', 'GatewayWithAccountSecretSerializer']
class GatewaySerializer(HostSerializer):
class Meta(HostSerializer.Meta):
model = Gateway
def validate_platform(self, p):
if not p.name.startswith('Gateway'):
raise serializers.ValidationError(_('The platform must start with Gateway'))
return p
def validate_name(self, value):
queryset = Asset.objects.filter(name=value)
if self.instance:
queryset = queryset.exclude(id=self.instance.id)
has = queryset.exists()
if has:
raise serializers.ValidationError(_('This field must be unique.'))
return value
class GatewayWithAccountSecretSerializer(GatewaySerializer):
account = AccountSecretSerializer(required=False, label=_('Account'), source='select_account')
class Meta(GatewaySerializer.Meta):
fields = GatewaySerializer.Meta.fields + ['account']