Просмотр исходного кода

Refactor FieldChoicesViewSet; add Interface.type to virtualization _choices endpoint

Jeremy Stretch 6 лет назад
Родитель
Сommit
49f027fae7

+ 2 - 2
netbox/circuits/api/views.py

@@ -18,8 +18,8 @@ from . import serializers
 
 
 class CircuitsFieldChoicesViewSet(FieldChoicesViewSet):
 class CircuitsFieldChoicesViewSet(FieldChoicesViewSet):
     fields = (
     fields = (
-        (Circuit, ['status']),
-        (CircuitTermination, ['term_side']),
+        (serializers.CircuitSerializer, ['status']),
+        (serializers.CircuitTerminationSerializer, ['term_side']),
     )
     )
 
 
 
 

+ 23 - 24
netbox/dcim/api/views.py

@@ -2,8 +2,8 @@ from collections import OrderedDict
 
 
 from django.conf import settings
 from django.conf import settings
 from django.db.models import Count, F
 from django.db.models import Count, F
-from django.http import HttpResponseForbidden, HttpResponseBadRequest, HttpResponse
-from django.shortcuts import get_object_or_404, reverse
+from django.http import HttpResponseForbidden, HttpResponse
+from django.shortcuts import get_object_or_404
 from drf_yasg import openapi
 from drf_yasg import openapi
 from drf_yasg.openapi import Parameter
 from drf_yasg.openapi import Parameter
 from drf_yasg.utils import swagger_auto_schema
 from drf_yasg.utils import swagger_auto_schema
@@ -13,7 +13,7 @@ from rest_framework.response import Response
 from rest_framework.viewsets import GenericViewSet, ViewSet
 from rest_framework.viewsets import GenericViewSet, ViewSet
 
 
 from circuits.models import Circuit
 from circuits.models import Circuit
-from dcim import constants, filters
+from dcim import filters
 from dcim.models import (
 from dcim.models import (
     Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
     Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
     DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate,
     DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate,
@@ -28,7 +28,6 @@ from ipam.models import Prefix, VLAN
 from utilities.api import (
 from utilities.api import (
     get_serializer_for_model, IsAuthenticatedOrLoginNotRequired, FieldChoicesViewSet, ModelViewSet, ServiceUnavailable,
     get_serializer_for_model, IsAuthenticatedOrLoginNotRequired, FieldChoicesViewSet, ModelViewSet, ServiceUnavailable,
 )
 )
-from utilities.custom_inspectors import NullablePaginatorInspector
 from utilities.utils import get_subquery
 from utilities.utils import get_subquery
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
 from . import serializers
 from . import serializers
@@ -41,26 +40,26 @@ from .exceptions import MissingFilterException
 
 
 class DCIMFieldChoicesViewSet(FieldChoicesViewSet):
 class DCIMFieldChoicesViewSet(FieldChoicesViewSet):
     fields = (
     fields = (
-        (Cable, ['length_unit', 'status', 'termination_a_type', 'termination_b_type', 'type']),
-        (ConsolePort, ['type', 'connection_status']),
-        (ConsolePortTemplate, ['type']),
-        (ConsoleServerPort, ['type']),
-        (ConsoleServerPortTemplate, ['type']),
-        (Device, ['face', 'status']),
-        (DeviceType, ['subdevice_role']),
-        (FrontPort, ['type']),
-        (FrontPortTemplate, ['type']),
-        (Interface, ['type', 'mode']),
-        (InterfaceTemplate, ['type']),
-        (PowerFeed, ['phase', 'status', 'supply', 'type']),
-        (PowerOutlet, ['type', 'feed_leg']),
-        (PowerOutletTemplate, ['type', 'feed_leg']),
-        (PowerPort, ['type', 'connection_status']),
-        (PowerPortTemplate, ['type']),
-        (Rack, ['outer_unit', 'status', 'type', 'width']),
-        (RearPort, ['type']),
-        (RearPortTemplate, ['type']),
-        (Site, ['status']),
+        (serializers.CableSerializer, ['length_unit', 'status', 'termination_a_type', 'termination_b_type', 'type']),
+        (serializers.ConsolePortSerializer, ['type', 'connection_status']),
+        (serializers.ConsolePortTemplateSerializer, ['type']),
+        (serializers.ConsoleServerPortSerializer, ['type']),
+        (serializers.ConsoleServerPortTemplateSerializer, ['type']),
+        (serializers.DeviceSerializer, ['face', 'status']),
+        (serializers.DeviceTypeSerializer, ['subdevice_role']),
+        (serializers.FrontPortSerializer, ['type']),
+        (serializers.FrontPortTemplateSerializer, ['type']),
+        (serializers.InterfaceSerializer, ['type', 'mode']),
+        (serializers.InterfaceTemplateSerializer, ['type']),
+        (serializers.PowerFeedSerializer, ['phase', 'status', 'supply', 'type']),
+        (serializers.PowerOutletSerializer, ['type', 'feed_leg']),
+        (serializers.PowerOutletTemplateSerializer, ['type', 'feed_leg']),
+        (serializers.PowerPortSerializer, ['type', 'connection_status']),
+        (serializers.PowerPortTemplateSerializer, ['type']),
+        (serializers.RackSerializer, ['outer_unit', 'status', 'type', 'width']),
+        (serializers.RearPortSerializer, ['type']),
+        (serializers.RearPortTemplateSerializer, ['type']),
+        (serializers.SiteSerializer, ['status']),
     )
     )
 
 
 
 

+ 3 - 3
netbox/extras/api/views.py

@@ -25,9 +25,9 @@ from . import serializers
 
 
 class ExtrasFieldChoicesViewSet(FieldChoicesViewSet):
 class ExtrasFieldChoicesViewSet(FieldChoicesViewSet):
     fields = (
     fields = (
-        (ExportTemplate, ['template_language']),
-        (Graph, ['type', 'template_language']),
-        (ObjectChange, ['action']),
+        (serializers.ExportTemplateSerializer, ['template_language']),
+        (serializers.GraphSerializer, ['type', 'template_language']),
+        (serializers.ObjectChangeSerializer, ['action']),
     )
     )
 
 
 
 

+ 5 - 5
netbox/ipam/api/views.py

@@ -20,11 +20,11 @@ from . import serializers
 
 
 class IPAMFieldChoicesViewSet(FieldChoicesViewSet):
 class IPAMFieldChoicesViewSet(FieldChoicesViewSet):
     fields = (
     fields = (
-        (Aggregate, ['family']),
-        (Prefix, ['family', 'status']),
-        (IPAddress, ['family', 'status', 'role']),
-        (VLAN, ['status']),
-        (Service, ['protocol']),
+        (serializers.AggregateSerializer, ['family']),
+        (serializers.PrefixSerializer, ['family', 'status']),
+        (serializers.IPAddressSerializer, ['family', 'status', 'role']),
+        (serializers.VLANSerializer, ['status']),
+        (serializers.ServiceSerializer, ['protocol']),
     )
     )
 
 
 
 

+ 4 - 5
netbox/utilities/api.py

@@ -329,13 +329,12 @@ class FieldChoicesViewSet(ViewSet):
 
 
         # Compile a dict of all fields in this view
         # Compile a dict of all fields in this view
         self._fields = OrderedDict()
         self._fields = OrderedDict()
-        for cls, field_list in self.fields:
+        for serializer_class, field_list in self.fields:
             for field_name in field_list:
             for field_name in field_list:
 
 
-                model_name = cls._meta.verbose_name.lower().replace(' ', '-')
-                key = ':'.join([model_name, field_name])
-
-                serializer = get_serializer_for_model(cls)()
+                model_name = serializer_class.Meta.model._meta.verbose_name
+                key = ':'.join([model_name.lower().replace(' ', '-'), field_name])
+                serializer = serializer_class()
                 choices = []
                 choices = []
 
 
                 for k, v in serializer.get_fields()[field_name].choices.items():
                 for k, v in serializer.get_fields()[field_name].choices.items():

+ 2 - 1
netbox/virtualization/api/views.py

@@ -15,7 +15,8 @@ from . import serializers
 
 
 class VirtualizationFieldChoicesViewSet(FieldChoicesViewSet):
 class VirtualizationFieldChoicesViewSet(FieldChoicesViewSet):
     fields = (
     fields = (
-        (VirtualMachine, ['status']),
+        (serializers.VirtualMachineSerializer, ['status']),
+        (serializers.InterfaceSerializer, ['type']),
     )
     )