Browse Source

Fixes #1522: Removed object create/edit forms from the browsable API

Jeremy Stretch 7 years ago
parent
commit
a52a871a94
2 changed files with 17 additions and 0 deletions
  1. 4 0
      netbox/netbox/settings.py
  2. 13 0
      netbox/utilities/api.py

+ 4 - 0
netbox/netbox/settings.py

@@ -234,6 +234,10 @@ REST_FRAMEWORK = {
     'DEFAULT_PERMISSION_CLASSES': (
         'utilities.api.TokenPermissions',
     ),
+    'DEFAULT_RENDERER_CLASSES': (
+        'rest_framework.renderers.JSONRenderer',
+        'utilities.api.FormlessBrowsableAPIRenderer',
+    ),
     'DEFAULT_VERSION': REST_FRAMEWORK_VERSION,
     'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning',
     'PAGE_SIZE': PAGINATE_COUNT,

+ 13 - 0
netbox/utilities/api.py

@@ -8,6 +8,7 @@ from rest_framework.compat import is_authenticated
 from rest_framework.exceptions import APIException
 from rest_framework.pagination import LimitOffsetPagination
 from rest_framework.permissions import BasePermission, DjangoModelPermissions, SAFE_METHODS
+from rest_framework.renderers import BrowsableAPIRenderer
 from rest_framework.serializers import Field, ModelSerializer, ValidationError
 from rest_framework.views import get_view_name as drf_get_view_name
 
@@ -207,6 +208,18 @@ class OptionalLimitOffsetPagination(LimitOffsetPagination):
 
 
 #
+# Renderers
+#
+
+class FormlessBrowsableAPIRenderer(BrowsableAPIRenderer):
+    """
+    Override the built-in BrowsableAPIRenderer to disable HTML forms.
+    """
+    def show_form_for_method(self, *args, **kwargs):
+        return False
+
+
+#
 # Miscellaneous
 #