mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Move APIRootView to netbox.api.views
This commit is contained in:
parent
db0c61dea4
commit
4971469590
@ -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.
|
||||||
|
@ -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.api.views import APIRootView, StatusView
|
||||||
from netbox.views import APIRootView, HomeView, StaticMediaFailureView, SearchView
|
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
|
||||||
|
|
||||||
|
@ -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)),
|
|
||||||
)))
|
|
||||||
|
Loading…
Reference in New Issue
Block a user