mirror of https://github.com/jumpserver/jumpserver
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
from rest_framework import serializers
|
|
|
|
from common.utils import get_request_ip
|
|
from users.serializers.v2 import ServiceAccountRegistrationSerializer
|
|
from ..models import Terminal
|
|
|
|
|
|
__all__ = ['TerminalSerializer', 'TerminalRegistrationSerializer']
|
|
|
|
|
|
class TerminalSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Terminal
|
|
fields = [
|
|
'id', 'name', 'remote_addr', 'comment',
|
|
]
|
|
read_only_fields = ['id', 'remote_addr']
|
|
|
|
|
|
class TerminalRegistrationSerializer(serializers.ModelSerializer):
|
|
service_account = ServiceAccountRegistrationSerializer(read_only=True)
|
|
service_account_serializer = None
|
|
|
|
class Meta:
|
|
model = Terminal
|
|
fields = [
|
|
'id', 'name', 'remote_addr', 'comment', 'service_account'
|
|
]
|
|
read_only_fields = ['id', 'remote_addr', 'service_account']
|
|
|
|
def validate(self, attrs):
|
|
self.service_account_serializer = ServiceAccountRegistrationSerializer(data=attrs)
|
|
self.service_account_serializer.is_valid(raise_exception=True)
|
|
return attrs
|
|
|
|
def create(self, validated_data):
|
|
request = self.context.get('request')
|
|
sa = self.service_account_serializer.save()
|
|
instance = super().create(validated_data)
|
|
instance.is_accepted = True
|
|
instance.user = sa
|
|
instance.remote_addr = get_request_ip(request)
|
|
instance.save()
|
|
return instance
|