mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-19 20:02:22 -06:00
Some checks failed
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
158 lines
5.1 KiB
Python
158 lines
5.1 KiB
Python
from rest_framework import serializers
|
|
|
|
from core.api.serializers_.data import DataFileSerializer, DataSourceSerializer
|
|
from dcim.api.serializers_.devicetypes import DeviceTypeSerializer
|
|
from dcim.api.serializers_.platforms import PlatformSerializer
|
|
from dcim.api.serializers_.roles import DeviceRoleSerializer
|
|
from dcim.api.serializers_.sites import LocationSerializer, RegionSerializer, SiteSerializer, SiteGroupSerializer
|
|
from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup
|
|
from extras.models import ConfigContext, ConfigContextProfile, Tag
|
|
from netbox.api.fields import SerializedPKRelatedField
|
|
from netbox.api.serializers import ChangeLogMessageSerializer, PrimaryModelSerializer, ValidatedModelSerializer
|
|
from users.api.serializers_.mixins import OwnerMixin
|
|
from tenancy.api.serializers_.tenants import TenantSerializer, TenantGroupSerializer
|
|
from tenancy.models import Tenant, TenantGroup
|
|
from virtualization.api.serializers_.clusters import ClusterSerializer, ClusterGroupSerializer, ClusterTypeSerializer
|
|
from virtualization.models import Cluster, ClusterGroup, ClusterType
|
|
|
|
__all__ = (
|
|
'ConfigContextProfileSerializer',
|
|
'ConfigContextSerializer',
|
|
)
|
|
|
|
|
|
class ConfigContextProfileSerializer(PrimaryModelSerializer):
|
|
data_source = DataSourceSerializer(
|
|
nested=True,
|
|
required=False
|
|
)
|
|
data_file = DataFileSerializer(
|
|
nested=True,
|
|
read_only=True
|
|
)
|
|
|
|
class Meta:
|
|
model = ConfigContextProfile
|
|
fields = [
|
|
'id', 'url', 'display_url', 'display', 'name', 'description', 'schema', 'tags', 'owner', 'comments',
|
|
'data_source', 'data_path', 'data_file', 'data_synced', 'created', 'last_updated',
|
|
]
|
|
brief_fields = ('id', 'url', 'display', 'name', 'description')
|
|
|
|
|
|
class ConfigContextSerializer(OwnerMixin, ChangeLogMessageSerializer, ValidatedModelSerializer):
|
|
profile = ConfigContextProfileSerializer(
|
|
nested=True,
|
|
required=False,
|
|
allow_null=True,
|
|
default=None,
|
|
)
|
|
regions = SerializedPKRelatedField(
|
|
queryset=Region.objects.all(),
|
|
serializer=RegionSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
site_groups = SerializedPKRelatedField(
|
|
queryset=SiteGroup.objects.all(),
|
|
serializer=SiteGroupSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
sites = SerializedPKRelatedField(
|
|
queryset=Site.objects.all(),
|
|
serializer=SiteSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
locations = SerializedPKRelatedField(
|
|
queryset=Location.objects.all(),
|
|
serializer=LocationSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
device_types = SerializedPKRelatedField(
|
|
queryset=DeviceType.objects.all(),
|
|
serializer=DeviceTypeSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
roles = SerializedPKRelatedField(
|
|
queryset=DeviceRole.objects.all(),
|
|
serializer=DeviceRoleSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
platforms = SerializedPKRelatedField(
|
|
queryset=Platform.objects.all(),
|
|
serializer=PlatformSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
cluster_types = SerializedPKRelatedField(
|
|
queryset=ClusterType.objects.all(),
|
|
serializer=ClusterTypeSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
cluster_groups = SerializedPKRelatedField(
|
|
queryset=ClusterGroup.objects.all(),
|
|
serializer=ClusterGroupSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
clusters = SerializedPKRelatedField(
|
|
queryset=Cluster.objects.all(),
|
|
serializer=ClusterSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
tenant_groups = SerializedPKRelatedField(
|
|
queryset=TenantGroup.objects.all(),
|
|
serializer=TenantGroupSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
tenants = SerializedPKRelatedField(
|
|
queryset=Tenant.objects.all(),
|
|
serializer=TenantSerializer,
|
|
nested=True,
|
|
required=False,
|
|
many=True
|
|
)
|
|
tags = serializers.SlugRelatedField(
|
|
queryset=Tag.objects.all(),
|
|
slug_field='slug',
|
|
required=False,
|
|
many=True
|
|
)
|
|
data_source = DataSourceSerializer(
|
|
nested=True,
|
|
required=False
|
|
)
|
|
data_file = DataFileSerializer(
|
|
nested=True,
|
|
read_only=True
|
|
)
|
|
|
|
class Meta:
|
|
model = ConfigContext
|
|
fields = [
|
|
'id', 'url', 'display_url', 'display', 'name', 'weight', 'profile', 'description', 'is_active', 'regions',
|
|
'site_groups', 'sites', 'locations', 'device_types', 'roles', 'platforms', 'cluster_types',
|
|
'cluster_groups', 'clusters', 'tenant_groups', 'tenants', 'owner', 'tags', 'data_source', 'data_path',
|
|
'data_file', 'data_synced', 'data', 'created', 'last_updated',
|
|
]
|
|
brief_fields = ('id', 'url', 'display', 'name', 'description')
|