• 老广's avatar
    服务账号注册机制更改 (#2079) · 9cfcadc2
    老广 authored
    * [Update] 服务账号注册
    
    * [Update] 修改settings配置
    
    * [Update] 修改settings
    
    * [Update] 整理terminal api
    
    * [Update] 修改terminal api
    
    * [Update] 修改terminal注册机制
    9cfcadc2
v2.py 1.33 KB
# -*- coding: utf-8 -*-
#
from rest_framework import serializers
from ..models import User, AccessKey


class AccessKeySerializer(serializers.ModelSerializer):

    class Meta:
        model = AccessKey
        fields = ['id', 'secret']
        read_only_fields = ['id', 'secret']


class ServiceAccountRegistrationSerializer(serializers.ModelSerializer):
    access_key = AccessKeySerializer(read_only=True)

    class Meta:
        model = User
        fields = ['id', 'name', 'access_key']
        read_only_fields = ['id', 'access_key']

    def get_username(self):
        return self.initial_data.get('name')

    def get_email(self):
        name = self.initial_data.get('name')
        return '{}@serviceaccount.local'.format(name)

    def validate_name(self, name):
        email = self.get_email()
        username = self.get_username()
        if User.objects.filter(email=email) or \
                User.objects.filter(username=username):
            raise serializers.ValidationError('name not unique', code='unique')
        return name

    def create(self, validated_data):
        validated_data['email'] = self.get_email()
        validated_data['username'] = self.get_username()
        validated_data['role'] = User.ROLE_APP
        instance = super().create(validated_data)
        instance.create_access_key()
        return instance