Parcourir la source

Provided a root API view

Jeremy Stretch il y a 8 ans
Parent
commit
7e51ca9912
2 fichiers modifiés avec 25 ajouts et 1 suppressions
  1. 2 1
      netbox/netbox/urls.py
  2. 23 0
      netbox/netbox/views.py

+ 2 - 1
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')),

+ 23 - 0
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