from django.contrib.auth.models import Group from rest_framework import serializers from .. import models class GroupSerializer(serializers.ModelSerializer): class Meta: model = Group fields = ['name'] class SiteSerializer(serializers.ModelSerializer): class Meta: model = models.Site fields = ['name'] class ServiceSerializer(serializers.ModelSerializer): site = SiteSerializer(many=True) groups = GroupSerializer(many=True) class Meta: model = models.Service exclude = ['id'] class SSHPublicKeySerializer(serializers.ModelSerializer): class Meta: model = models.SSHPublicKey fields = ['name', 'key'] class DeploymentSerializer(serializers.Serializer): service = ServiceSerializer() ssh_keys = SSHPublicKeySerializer(many=True) class Meta: model = models.Deployment exclude = ['user'] class DeploymentSerializerB(serializers.Serializer): service = ServiceSerializer() class Meta: model = models.Deployment class UserSerializer(serializers.ModelSerializer): groups = GroupSerializer(many=True) ssh_keys = SSHPublicKeySerializer(many=True) deployments = DeploymentSerializer(many=True) class Meta: model = models.User fields = ['sub', 'email', 'username', 'ssh_keys', 'groups', 'deployments'] class ClientSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = models.User fields = ['name', 'site'] class StateSerializer(serializers.Serializer): services = ServiceSerializer(many=True) class ClientViewSerializer(serializers.Serializer): deployments = serializers.JSONField()