mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Implemented static writable ModelSerializers for all models
This commit is contained in:
@@ -2,7 +2,7 @@ from rest_framework import serializers
|
||||
|
||||
from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
|
||||
from dcim.api.serializers import NestedSiteSerializer, DeviceInterfaceSerializer
|
||||
from extras.api.serializers import CustomFieldSerializer
|
||||
from extras.api.serializers import CustomFieldValueSerializer
|
||||
from tenancy.api.serializers import NestedTenantSerializer
|
||||
|
||||
|
||||
@@ -10,17 +10,18 @@ from tenancy.api.serializers import NestedTenantSerializer
|
||||
# Providers
|
||||
#
|
||||
|
||||
class ProviderSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
class ProviderSerializer(serializers.ModelSerializer):
|
||||
custom_field_values = CustomFieldValueSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Provider
|
||||
fields = [
|
||||
'id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments',
|
||||
'custom_fields',
|
||||
'custom_field_values',
|
||||
]
|
||||
|
||||
|
||||
class NestedProviderSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class NestedProviderSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
|
||||
|
||||
class Meta:
|
||||
@@ -28,6 +29,15 @@ class NestedProviderSerializer(serializers.HyperlinkedModelSerializer):
|
||||
fields = ['id', 'url', 'name', 'slug']
|
||||
|
||||
|
||||
class WritableProviderSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Provider
|
||||
fields = [
|
||||
'id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments',
|
||||
]
|
||||
|
||||
|
||||
#
|
||||
# Circuit types
|
||||
#
|
||||
@@ -39,7 +49,7 @@ class CircuitTypeSerializer(serializers.ModelSerializer):
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class NestedCircuitTypeSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class NestedCircuitTypeSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
|
||||
|
||||
class Meta:
|
||||
@@ -64,20 +74,21 @@ class CircuitTerminationSerializer(serializers.ModelSerializer):
|
||||
# Circuits
|
||||
#
|
||||
|
||||
class CircuitSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
class CircuitSerializer(serializers.ModelSerializer):
|
||||
provider = NestedProviderSerializer()
|
||||
type = NestedCircuitTypeSerializer()
|
||||
tenant = NestedTenantSerializer()
|
||||
custom_field_values = CustomFieldValueSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Circuit
|
||||
fields = [
|
||||
'id', 'cid', 'provider', 'type', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
|
||||
'custom_fields',
|
||||
'custom_field_values',
|
||||
]
|
||||
|
||||
|
||||
class NestedCircuitSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class NestedCircuitSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
|
||||
|
||||
class Meta:
|
||||
@@ -85,12 +96,10 @@ class NestedCircuitSerializer(serializers.HyperlinkedModelSerializer):
|
||||
fields = ['id', 'url', 'cid']
|
||||
|
||||
|
||||
# TODO: Delete this
|
||||
class CircuitDetailSerializer(CircuitSerializer):
|
||||
terminations = CircuitTerminationSerializer(many=True)
|
||||
class WritableCircuitSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta(CircuitSerializer.Meta):
|
||||
class Meta:
|
||||
model = Circuit
|
||||
fields = [
|
||||
'id', 'cid', 'provider', 'type', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
|
||||
'terminations', 'custom_fields',
|
||||
]
|
||||
|
@@ -2,9 +2,6 @@ from django.conf.urls import include, url
|
||||
|
||||
from rest_framework import routers
|
||||
|
||||
from extras.models import GRAPH_TYPE_PROVIDER
|
||||
from extras.api.views import GraphListView
|
||||
|
||||
from . import views
|
||||
|
||||
|
||||
|
@@ -21,9 +21,10 @@ from . import serializers
|
||||
# Providers
|
||||
#
|
||||
|
||||
class ProviderViewSet(CustomFieldModelViewSet):
|
||||
class ProviderViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
|
||||
queryset = Provider.objects.all()
|
||||
serializer_class = serializers.ProviderSerializer
|
||||
write_serializer_class = serializers.WritableProviderSerializer
|
||||
|
||||
@detail_route()
|
||||
def graphs(self, request, pk=None):
|
||||
@@ -49,6 +50,7 @@ class CircuitTypeViewSet(ModelViewSet):
|
||||
class CircuitViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
|
||||
queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
|
||||
serializer_class = serializers.CircuitSerializer
|
||||
write_serializer_class = serializers.WritableCircuitSerializer
|
||||
filter_class = CircuitFilter
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user