Ver Fonte

Move APIRootView to netbox.api.views

Jeremy Stretch há 5 anos atrás
pai
commit
4971469590
3 ficheiros alterados com 33 adições e 30 exclusões
  1. 29 0
      netbox/netbox/api/views.py
  2. 2 2
      netbox/netbox/urls.py
  3. 2 28
      netbox/netbox/views.py

+ 29 - 0
netbox/netbox/api/views.py

@@ -1,5 +1,6 @@
 import logging
 import logging
 import platform
 import platform
+from collections import OrderedDict
 
 
 from django import __version__ as DJANGO_VERSION
 from django import __version__ as DJANGO_VERSION
 from django.apps import apps
 from django.apps import apps
@@ -10,6 +11,7 @@ from django.db.models import ProtectedError
 from django_rq.queues import get_connection
 from django_rq.queues import get_connection
 from rest_framework import mixins, status
 from rest_framework import mixins, status
 from rest_framework.response import Response
 from rest_framework.response import Response
+from rest_framework.reverse import reverse
 from rest_framework.views import APIView
 from rest_framework.views import APIView
 from rest_framework.viewsets import GenericViewSet
 from rest_framework.viewsets import GenericViewSet
 from rq.worker import Worker
 from rq.worker import Worker
@@ -232,6 +234,33 @@ class ModelViewSet(mixins.CreateModelMixin,
 # Views
 # Views
 #
 #
 
 
+class APIRootView(APIView):
+    """
+    This is the root of NetBox's REST API. API endpoints are arranged by app and model name; e.g. `/api/dcim/sites/`.
+    """
+    _ignore_model_permissions = True
+    exclude_from_schema = True
+    swagger_schema = None
+
+    def get_view_name(self):
+        return "API Root"
+
+    def get(self, request, format=None):
+
+        return Response(OrderedDict((
+            ('circuits', reverse('circuits-api:api-root', request=request, format=format)),
+            ('dcim', reverse('dcim-api:api-root', request=request, format=format)),
+            ('extras', reverse('extras-api:api-root', request=request, format=format)),
+            ('ipam', reverse('ipam-api:api-root', request=request, format=format)),
+            ('plugins', reverse('plugins-api:api-root', request=request, format=format)),
+            ('secrets', reverse('secrets-api:api-root', request=request, format=format)),
+            ('status', reverse('api-status', request=request, format=format)),
+            ('tenancy', reverse('tenancy-api:api-root', request=request, format=format)),
+            ('users', reverse('users-api:api-root', request=request, format=format)),
+            ('virtualization', reverse('virtualization-api:api-root', request=request, format=format)),
+        )))
+
+
 class StatusView(APIView):
 class StatusView(APIView):
     """
     """
     A lightweight read-only endpoint for conveying NetBox's current operational status.
     A lightweight read-only endpoint for conveying NetBox's current operational status.

+ 2 - 2
netbox/netbox/urls.py

@@ -6,8 +6,8 @@ from drf_yasg import openapi
 from drf_yasg.views import get_schema_view
 from drf_yasg.views import get_schema_view
 
 
 from extras.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns
 from extras.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns
-from netbox.api.views import StatusView
-from netbox.views import APIRootView, HomeView, StaticMediaFailureView, SearchView
+from netbox.api.views import APIRootView, StatusView
+from netbox.views import HomeView, StaticMediaFailureView, SearchView
 from users.views import LoginView, LogoutView
 from users.views import LoginView, LogoutView
 from .admin import admin_site
 from .admin import admin_site
 
 

+ 2 - 28
netbox/netbox/views.py

@@ -4,11 +4,9 @@ from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
 from django.db.models import Count, F
 from django.db.models import Count, F
 from django.shortcuts import render
 from django.shortcuts import render
+from django.urls import reverse
 from django.views.generic import View
 from django.views.generic import View
 from packaging import version
 from packaging import version
-from rest_framework.response import Response
-from rest_framework.reverse import reverse
-from rest_framework.views import APIView
 
 
 from circuits.filters import CircuitFilterSet, ProviderFilterSet
 from circuits.filters import CircuitFilterSet, ProviderFilterSet
 from circuits.models import Circuit, Provider
 from circuits.models import Circuit, Provider
@@ -306,7 +304,7 @@ class SearchView(View):
                     results.append({
                     results.append({
                         'name': queryset.model._meta.verbose_name_plural,
                         'name': queryset.model._meta.verbose_name_plural,
                         'table': table,
                         'table': table,
-                        'url': '{}?q={}'.format(reverse(url), form.cleaned_data['q'])
+                        'url': f"{reverse(url)}?q={form.cleaned_data.get('q')}"
                     })
                     })
 
 
         return render(request, 'search.html', {
         return render(request, 'search.html', {
@@ -323,27 +321,3 @@ class StaticMediaFailureView(View):
         return render(request, 'media_failure.html', {
         return render(request, 'media_failure.html', {
             'filename': request.GET.get('filename')
             'filename': request.GET.get('filename')
         })
         })
-
-
-class APIRootView(APIView):
-    _ignore_model_permissions = True
-    exclude_from_schema = True
-    swagger_schema = None
-
-    def get_view_name(self):
-        return "API Root"
-
-    def get(self, request, format=None):
-
-        return Response(OrderedDict((
-            ('circuits', reverse('circuits-api:api-root', request=request, format=format)),
-            ('dcim', reverse('dcim-api:api-root', request=request, format=format)),
-            ('extras', reverse('extras-api:api-root', request=request, format=format)),
-            ('ipam', reverse('ipam-api:api-root', request=request, format=format)),
-            ('plugins', reverse('plugins-api:api-root', request=request, format=format)),
-            ('secrets', reverse('secrets-api:api-root', request=request, format=format)),
-            ('status', reverse('api-status', request=request, format=format)),
-            ('tenancy', reverse('tenancy-api:api-root', request=request, format=format)),
-            ('users', reverse('users-api:api-root', request=request, format=format)),
-            ('virtualization', reverse('virtualization-api:api-root', request=request, format=format)),
-        )))