• 老广's avatar
    服务账号注册机制更改 (#2079) · 9cfcadc2
    老广 authored
    * [Update] 服务账号注册
    
    * [Update] 修改settings配置
    
    * [Update] 修改settings
    
    * [Update] 整理terminal api
    
    * [Update] 修改terminal api
    
    * [Update] 修改terminal注册机制
    Unverified
    9cfcadc2
v2.py 1.43 KB
# -*- 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