2
0
Эх сурвалжийг харах

Closes #2200: Replaced detail_route API view decorator with action (DRF change)

Jeremy Stretch 7 жил өмнө
parent
commit
b9bdd666da

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

@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
 from django.shortcuts import get_object_or_404
 from django.shortcuts import get_object_or_404
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import action
 from rest_framework.response import Response
 from rest_framework.response import Response
 
 
 from circuits import filters
 from circuits import filters
@@ -32,7 +32,7 @@ class ProviderViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.ProviderSerializer
     serializer_class = serializers.ProviderSerializer
     filter_class = filters.ProviderFilter
     filter_class = filters.ProviderFilter
 
 
-    @detail_route()
+    @action(detail=True)
     def graphs(self, request, pk=None):
     def graphs(self, request, pk=None):
         """
         """
         A convenience method for rendering graphs for a particular provider.
         A convenience method for rendering graphs for a particular provider.

+ 6 - 6
netbox/dcim/api/views.py

@@ -8,7 +8,7 @@ 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
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import action
 from rest_framework.mixins import ListModelMixin
 from rest_framework.mixins import ListModelMixin
 from rest_framework.response import Response
 from rest_framework.response import Response
 from rest_framework.viewsets import GenericViewSet, ViewSet
 from rest_framework.viewsets import GenericViewSet, ViewSet
@@ -63,7 +63,7 @@ class SiteViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.SiteSerializer
     serializer_class = serializers.SiteSerializer
     filter_class = filters.SiteFilter
     filter_class = filters.SiteFilter
 
 
-    @detail_route()
+    @action(detail=True)
     def graphs(self, request, pk=None):
     def graphs(self, request, pk=None):
         """
         """
         A convenience method for rendering graphs for a particular site.
         A convenience method for rendering graphs for a particular site.
@@ -103,7 +103,7 @@ class RackViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.RackSerializer
     serializer_class = serializers.RackSerializer
     filter_class = filters.RackFilter
     filter_class = filters.RackFilter
 
 
-    @detail_route()
+    @action(detail=True)
     def units(self, request, pk=None):
     def units(self, request, pk=None):
         """
         """
         List rack units (by rack)
         List rack units (by rack)
@@ -232,12 +232,12 @@ class DeviceViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.DeviceSerializer
     serializer_class = serializers.DeviceSerializer
     filter_class = filters.DeviceFilter
     filter_class = filters.DeviceFilter
 
 
-    @detail_route(url_path='config-context')
+    @action(detail=True, url_path='config-context')
     def config_context(self, request, pk):
     def config_context(self, request, pk):
         device = get_object_or_404(Device, pk=pk)
         device = get_object_or_404(Device, pk=pk)
         return Response(device.get_config_context())
         return Response(device.get_config_context())
 
 
-    @detail_route(url_path='napalm')
+    @action(detail=True, url_path='napalm')
     def napalm(self, request, pk):
     def napalm(self, request, pk):
         """
         """
         Execute a NAPALM method on a Device
         Execute a NAPALM method on a Device
@@ -337,7 +337,7 @@ class InterfaceViewSet(ModelViewSet):
     serializer_class = serializers.InterfaceSerializer
     serializer_class = serializers.InterfaceSerializer
     filter_class = filters.InterfaceFilter
     filter_class = filters.InterfaceFilter
 
 
-    @detail_route()
+    @action(detail=True)
     def graphs(self, request, pk=None):
     def graphs(self, request, pk=None):
         """
         """
         A convenience method for rendering graphs for a particular interface.
         A convenience method for rendering graphs for a particular interface.

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

@@ -4,7 +4,7 @@ from django.contrib.contenttypes.models import ContentType
 from django.db.models import Count
 from django.db.models import Count
 from django.http import Http404, HttpResponse
 from django.http import Http404, HttpResponse
 from django.shortcuts import get_object_or_404
 from django.shortcuts import get_object_or_404
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import action
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.response import Response
 from rest_framework.response import Response
 from rest_framework.viewsets import ReadOnlyModelViewSet, ViewSet
 from rest_framework.viewsets import ReadOnlyModelViewSet, ViewSet
@@ -94,7 +94,7 @@ class TopologyMapViewSet(ModelViewSet):
     serializer_class = serializers.TopologyMapSerializer
     serializer_class = serializers.TopologyMapSerializer
     filter_class = filters.TopologyMapFilter
     filter_class = filters.TopologyMapFilter
 
 
-    @detail_route()
+    @action(detail=True)
     def render(self, request, pk):
     def render(self, request, pk):
 
 
         tmap = get_object_or_404(TopologyMap, pk=pk)
         tmap = get_object_or_404(TopologyMap, pk=pk)
@@ -199,7 +199,7 @@ class ReportViewSet(ViewSet):
 
 
         return Response(serializer.data)
         return Response(serializer.data)
 
 
-    @detail_route(methods=['post'])
+    @action(detail=True, methods=['post'])
     def run(self, request, pk):
     def run(self, request, pk):
         """
         """
         Run a Report and create a new ReportResult, overwriting any previous result for the Report.
         Run a Report and create a new ReportResult, overwriting any previous result for the Report.

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

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 from django.conf import settings
 from django.conf import settings
 from django.shortcuts import get_object_or_404
 from django.shortcuts import get_object_or_404
 from rest_framework import status
 from rest_framework import status
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import action
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.response import Response
 from rest_framework.response import Response
 
 
@@ -77,7 +77,7 @@ class PrefixViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.PrefixSerializer
     serializer_class = serializers.PrefixSerializer
     filter_class = filters.PrefixFilter
     filter_class = filters.PrefixFilter
 
 
-    @detail_route(url_path='available-prefixes', methods=['get', 'post'])
+    @action(detail=True, url_path='available-prefixes', methods=['get', 'post'])
     def available_prefixes(self, request, pk=None):
     def available_prefixes(self, request, pk=None):
         """
         """
         A convenience method for returning available child prefixes within a parent.
         A convenience method for returning available child prefixes within a parent.
@@ -137,7 +137,7 @@ class PrefixViewSet(CustomFieldModelViewSet):
 
 
             return Response(serializer.data)
             return Response(serializer.data)
 
 
-    @detail_route(url_path='available-ips', methods=['get', 'post'])
+    @action(detail=True, url_path='available-ips', methods=['get', 'post'])
     def available_ips(self, request, pk=None):
     def available_ips(self, request, pk=None):
         """
         """
         A convenience method for returning available IP addresses within a prefix. By default, the number of IPs
         A convenience method for returning available IP addresses within a prefix. By default, the number of IPs

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

@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
 from django.shortcuts import get_object_or_404
 from django.shortcuts import get_object_or_404
-from rest_framework.decorators import detail_route
+from rest_framework.decorators import action
 from rest_framework.response import Response
 from rest_framework.response import Response
 
 
 from dcim.models import Interface
 from dcim.models import Interface
@@ -53,7 +53,7 @@ class VirtualMachineViewSet(CustomFieldModelViewSet):
     serializer_class = serializers.VirtualMachineSerializer
     serializer_class = serializers.VirtualMachineSerializer
     filter_class = filters.VirtualMachineFilter
     filter_class = filters.VirtualMachineFilter
 
 
-    @detail_route(url_path='config-context')
+    @action(detail=True, url_path='config-context')
     def config_context(self, request, pk):
     def config_context(self, request, pk):
         device = get_object_or_404(VirtualMachine, pk=pk)
         device = get_object_or_404(VirtualMachine, pk=pk)
         return Response(device.get_config_context())
         return Response(device.get_config_context())

+ 1 - 1
requirements.txt

@@ -6,7 +6,7 @@ django-mptt>=0.9.0
 django-tables2>=1.19.0
 django-tables2>=1.19.0
 django-taggit>=0.22.2
 django-taggit>=0.22.2
 django-timezone-field>=2.0
 django-timezone-field>=2.0
-djangorestframework>=3.7.7,<3.8.2
+djangorestframework>=3.8.0,<3.8.2
 drf-yasg[validation]>=1.4.4
 drf-yasg[validation]>=1.4.4
 graphviz>=0.8.2
 graphviz>=0.8.2
 Markdown>=2.6.11
 Markdown>=2.6.11