From 7e51ca9912b2b7e8c9e7fd3088872e295f1032a1 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 9 Mar 2017 15:05:01 -0500 Subject: [PATCH] Provided a root API view --- netbox/netbox/urls.py | 3 ++- netbox/netbox/views.py | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index ce55ab135..46737bf3c 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -2,7 +2,7 @@ from django.conf import settings from django.conf.urls import include, url from django.contrib import admin -from netbox.views import home, handle_500, trigger_500 +from netbox.views import APIRootView, home, handle_500, trigger_500 from users.views import login, logout @@ -26,6 +26,7 @@ _patterns = [ url(r'^profile/', include('users.urls', namespace='users')), # API + url(r'^api/$', APIRootView.as_view()), url(r'^api/circuits/', include('circuits.api.urls', namespace='circuits-api')), url(r'^api/dcim/', include('dcim.api.urls', namespace='dcim-api')), url(r'^api/extras/', include('extras.api.urls', namespace='extras-api')), diff --git a/netbox/netbox/views.py b/netbox/netbox/views.py index 7aa144295..349612330 100644 --- a/netbox/netbox/views.py +++ b/netbox/netbox/views.py @@ -1,5 +1,10 @@ import sys +from rest_framework.permissions import IsAuthenticated +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework.reverse import reverse + from django.shortcuts import render from circuits.models import Provider, Circuit @@ -47,6 +52,24 @@ def home(request): }) +class APIRootView(APIView): + permission_classes = [IsAuthenticated] + + def get_view_name(self): + return u"API Root" + + def get(self, request, format=None): + + return Response({ + '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), + 'secrets': reverse('secrets-api:api-root', request=request, format=format), + 'tenancy': reverse('tenancy-api:api-root', request=request, format=format), + }) + + def handle_500(request): """ Custom server error handler