1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Remove FieldChoicesViewSet

This commit is contained in:
Jeremy Stretch
2020-03-12 10:48:17 -04:00
parent 997247ee77
commit ea9de37dd1
15 changed files with 7 additions and 167 deletions

View File

@ -14,9 +14,6 @@ class CircuitsRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = CircuitsRootView router.APIRootView = CircuitsRootView
# Field choices
router.register('_choices', views.CircuitsFieldChoicesViewSet, basename='field-choice')
# Providers # Providers
router.register('providers', views.ProviderViewSet) router.register('providers', views.ProviderViewSet)

View File

@ -8,21 +8,10 @@ from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
from extras.api.serializers import RenderedGraphSerializer from extras.api.serializers import RenderedGraphSerializer
from extras.api.views import CustomFieldModelViewSet from extras.api.views import CustomFieldModelViewSet
from extras.models import Graph from extras.models import Graph
from utilities.api import FieldChoicesViewSet, ModelViewSet from utilities.api import ModelViewSet
from . import serializers from . import serializers
#
# Field choices
#
class CircuitsFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(serializers.CircuitSerializer, ['status']),
(serializers.CircuitTerminationSerializer, ['term_side']),
)
# #
# Providers # Providers
# #

View File

@ -14,9 +14,6 @@ class DCIMRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = DCIMRootView router.APIRootView = DCIMRootView
# Field choices
router.register('_choices', views.DCIMFieldChoicesViewSet, basename='field-choice')
# Sites # Sites
router.register('regions', views.RegionViewSet) router.register('regions', views.RegionViewSet)
router.register('sites', views.SiteViewSet) router.register('sites', views.SiteViewSet)

View File

@ -26,7 +26,7 @@ from extras.api.views import CustomFieldModelViewSet
from extras.models import Graph from extras.models import Graph
from ipam.models import Prefix, VLAN 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, ModelViewSet, ServiceUnavailable,
) )
from utilities.utils import get_subquery from utilities.utils import get_subquery
from virtualization.models import VirtualMachine from virtualization.models import VirtualMachine
@ -34,35 +34,6 @@ from . import serializers
from .exceptions import MissingFilterException from .exceptions import MissingFilterException
#
# Field choices
#
class DCIMFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(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']),
)
# Mixins # Mixins
class CableTraceMixin(object): class CableTraceMixin(object):

View File

@ -14,9 +14,6 @@ class ExtrasRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = ExtrasRootView router.APIRootView = ExtrasRootView
# Field choices
router.register('_choices', views.ExtrasFieldChoicesViewSet, basename='field-choice')
# Custom field choices # Custom field choices
router.register('_custom_field_choices', views.CustomFieldChoicesViewSet, basename='custom-field-choice') router.register('_custom_field_choices', views.CustomFieldChoicesViewSet, basename='custom-field-choice')

View File

@ -15,22 +15,10 @@ from extras.models import (
) )
from extras.reports import get_report, get_reports from extras.reports import get_report, get_reports
from extras.scripts import get_script, get_scripts, run_script from extras.scripts import get_script, get_scripts, run_script
from utilities.api import FieldChoicesViewSet, IsAuthenticatedOrLoginNotRequired, ModelViewSet from utilities.api import IsAuthenticatedOrLoginNotRequired, ModelViewSet
from . import serializers from . import serializers
#
# Field choices
#
class ExtrasFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(serializers.ExportTemplateSerializer, ['template_language']),
(serializers.GraphSerializer, ['type', 'template_language']),
(serializers.ObjectChangeSerializer, ['action']),
)
# #
# Custom field choices # Custom field choices
# #

View File

@ -14,9 +14,6 @@ class IPAMRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = IPAMRootView router.APIRootView = IPAMRootView
# Field choices
router.register('_choices', views.IPAMFieldChoicesViewSet, basename='field-choice')
# VRFs # VRFs
router.register('vrfs', views.VRFViewSet) router.register('vrfs', views.VRFViewSet)

View File

@ -10,26 +10,12 @@ from rest_framework.response import Response
from extras.api.views import CustomFieldModelViewSet from extras.api.views import CustomFieldModelViewSet
from ipam import filters from ipam import filters
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
from utilities.api import FieldChoicesViewSet, ModelViewSet from utilities.api import ModelViewSet
from utilities.constants import ADVISORY_LOCK_KEYS from utilities.constants import ADVISORY_LOCK_KEYS
from utilities.utils import get_subquery from utilities.utils import get_subquery
from . import serializers from . import serializers
#
# Field choices
#
class IPAMFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(serializers.AggregateSerializer, ['family']),
(serializers.PrefixSerializer, ['family', 'status']),
(serializers.IPAddressSerializer, ['family', 'status', 'role']),
(serializers.VLANSerializer, ['status']),
(serializers.ServiceSerializer, ['protocol']),
)
# #
# VRFs # VRFs
# #

View File

@ -14,9 +14,6 @@ class SecretsRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = SecretsRootView router.APIRootView = SecretsRootView
# Field choices
router.register('_choices', views.SecretsFieldChoicesViewSet, basename='field-choice')
# Secrets # Secrets
router.register('secret-roles', views.SecretRoleViewSet) router.register('secret-roles', views.SecretRoleViewSet)
router.register('secrets', views.SecretViewSet) router.register('secrets', views.SecretViewSet)

View File

@ -11,7 +11,7 @@ from rest_framework.viewsets import ViewSet
from secrets import filters from secrets import filters
from secrets.exceptions import InvalidKey from secrets.exceptions import InvalidKey
from secrets.models import Secret, SecretRole, SessionKey, UserKey from secrets.models import Secret, SecretRole, SessionKey, UserKey
from utilities.api import FieldChoicesViewSet, ModelViewSet from utilities.api import ModelViewSet
from . import serializers from . import serializers
ERR_USERKEY_MISSING = "No UserKey found for the current user." ERR_USERKEY_MISSING = "No UserKey found for the current user."
@ -20,14 +20,6 @@ ERR_PRIVKEY_MISSING = "Private key was not provided."
ERR_PRIVKEY_INVALID = "Invalid private key." ERR_PRIVKEY_INVALID = "Invalid private key."
#
# Field choices
#
class SecretsFieldChoicesViewSet(FieldChoicesViewSet):
fields = ()
# #
# Secret Roles # Secret Roles
# #

View File

@ -14,9 +14,6 @@ class TenancyRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = TenancyRootView router.APIRootView = TenancyRootView
# Field choices
router.register('_choices', views.TenancyFieldChoicesViewSet, basename='field-choice')
# Tenants # Tenants
router.register('tenant-groups', views.TenantGroupViewSet) router.register('tenant-groups', views.TenantGroupViewSet)
router.register('tenants', views.TenantViewSet) router.register('tenants', views.TenantViewSet)

View File

@ -4,20 +4,12 @@ from extras.api.views import CustomFieldModelViewSet
from ipam.models import IPAddress, Prefix, VLAN, VRF from ipam.models import IPAddress, Prefix, VLAN, VRF
from tenancy import filters from tenancy import filters
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from utilities.api import FieldChoicesViewSet, ModelViewSet from utilities.api import ModelViewSet
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
#
# Field choices
#
class TenancyFieldChoicesViewSet(FieldChoicesViewSet):
fields = ()
# #
# Tenant Groups # Tenant Groups
# #

View File

@ -371,49 +371,3 @@ class ModelViewSet(_ModelViewSet):
logger = logging.getLogger('netbox.api.views.ModelViewSet') logger = logging.getLogger('netbox.api.views.ModelViewSet')
logger.info(f"Deleting {instance} (PK: {instance.pk})") logger.info(f"Deleting {instance} (PK: {instance.pk})")
return super().perform_destroy(instance) return super().perform_destroy(instance)
class FieldChoicesViewSet(ViewSet):
"""
Expose the built-in numeric values which represent static choices for a model's field.
"""
permission_classes = [IsAuthenticatedOrLoginNotRequired]
fields = []
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Compile a dict of all fields in this view
self._fields = OrderedDict()
for serializer_class, field_list in self.fields:
for field_name in field_list:
model_name = serializer_class.Meta.model._meta.verbose_name
key = ':'.join([model_name.lower().replace(' ', '-'), field_name])
serializer = serializer_class()
choices = []
for k, v in serializer.get_fields()[field_name].choices.items():
if type(v) in [list, tuple]:
for k2, v2 in v:
choices.append({
'value': k2,
'label': v2,
})
else:
choices.append({
'value': k,
'label': v,
})
self._fields[key] = choices
def list(self, request):
return Response(self._fields)
def retrieve(self, request, pk):
if pk not in self._fields:
raise Http404
return Response(self._fields[pk])
def get_view_name(self):
return "Field Choices"

View File

@ -14,9 +14,6 @@ class VirtualizationRootView(routers.APIRootView):
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.APIRootView = VirtualizationRootView router.APIRootView = VirtualizationRootView
# Field choices
router.register('_choices', views.VirtualizationFieldChoicesViewSet, basename='field-choice')
# Clusters # Clusters
router.register('cluster-types', views.ClusterTypeViewSet) router.register('cluster-types', views.ClusterTypeViewSet)
router.register('cluster-groups', views.ClusterGroupViewSet) router.register('cluster-groups', views.ClusterGroupViewSet)

View File

@ -2,24 +2,13 @@ from django.db.models import Count
from dcim.models import Device, Interface from dcim.models import Device, Interface
from extras.api.views import CustomFieldModelViewSet from extras.api.views import CustomFieldModelViewSet
from utilities.api import FieldChoicesViewSet, ModelViewSet from utilities.api import ModelViewSet
from utilities.utils import get_subquery from utilities.utils import get_subquery
from virtualization import filters from virtualization import filters
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
from . import serializers from . import serializers
#
# Field choices
#
class VirtualizationFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(serializers.VirtualMachineSerializer, ['status']),
(serializers.InterfaceSerializer, ['type']),
)
# #
# Clusters # Clusters
# #