From 4a2206ecb149e46ca4ad1603c47352cf7e8af28d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 20 Mar 2017 17:47:18 -0400 Subject: [PATCH] Removed custom renderers --- netbox/dcim/api/views.py | 3 -- netbox/extras/api/renderers.py | 88 ---------------------------------- 2 files changed, 91 deletions(-) delete mode 100644 netbox/extras/api/renderers.py diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 38728679a..a5a53fbb5 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -1,7 +1,6 @@ from rest_framework.decorators import detail_route from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response -from rest_framework.settings import api_settings from rest_framework.viewsets import ModelViewSet, ViewSet from django.conf import settings @@ -14,7 +13,6 @@ from dcim.models import ( RackRole, Region, Site, ) from dcim import filters -from extras.api.renderers import BINDZoneRenderer, FlatJSONRenderer from extras.api.serializers import RenderedGraphSerializer from extras.api.views import CustomFieldModelViewSet from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE @@ -216,7 +214,6 @@ class DeviceViewSet(WritableSerializerMixin, CustomFieldModelViewSet): serializer_class = serializers.DeviceSerializer write_serializer_class = serializers.WritableDeviceSerializer filter_class = filters.DeviceFilter - renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [BINDZoneRenderer, FlatJSONRenderer] @detail_route(url_path='lldp-neighbors') def lldp_neighbors(self, request, pk): diff --git a/netbox/extras/api/renderers.py b/netbox/extras/api/renderers.py deleted file mode 100644 index f5a05cf1c..000000000 --- a/netbox/extras/api/renderers.py +++ /dev/null @@ -1,88 +0,0 @@ -import json -from rest_framework import renderers - - -# IP address family designations -AF = { - 4: 'A', - 6: 'AAAA', -} - - -class FormlessBrowsableAPIRenderer(renderers.BrowsableAPIRenderer): - """ - An instance of the browseable API with forms suppressed. Useful for POST endpoints that don't create objects. - """ - def show_form_for_method(self, *args, **kwargs): - return False - - -class BINDZoneRenderer(renderers.BaseRenderer): - """ - Generate a BIND zone file from a list of DNS records. - Required fields: `name`, `primary_ip` - """ - media_type = 'text/plain' - format = 'bind-zone' - - def render(self, data, media_type=None, renderer_context=None): - records = [] - for record in data['results']: - if record.get('name') and record.get('primary_ip'): - try: - records.append("{} IN {} {}".format( - record['name'], - AF[record['primary_ip']['family']], - record['primary_ip']['address'].split('/')[0], - )) - except KeyError: - pass - return '\n'.join(records) - - -class FlatJSONRenderer(renderers.BaseRenderer): - """ - Flattens a nested JSON response. - """ - format = 'json_flat' - media_type = 'application/json' - - def render(self, data, media_type=None, renderer_context=None): - - def flatten(entry): - for key, val in entry.items(): - if isinstance(val, dict): - for child_key, child_val in flatten(val): - yield "{}_{}".format(key, child_key), child_val - else: - yield key, val - - return json.dumps([dict(flatten(i)) for i in data['results']]) - - -class FreeRADIUSClientsRenderer(renderers.BaseRenderer): - """ - Generate a FreeRADIUS clients.conf file from a list of Secrets. - """ - media_type = 'text/plain' - format = 'freeradius' - - CLIENT_TEMPLATE = """client {name} {{ - ipaddr = {ip} - secret = {secret} -}}""" - - def render(self, data, media_type=None, renderer_context=None): - clients = [] - try: - for secret in data['results']: - if secret['device']['primary_ip'] and secret['plaintext']: - client = self.CLIENT_TEMPLATE.format( - name=secret['device']['name'], - ip=secret['device']['primary_ip']['address'].split('/')[0], - secret=secret['plaintext'] - ) - clients.append(client) - except: - pass - return '\n'.join(clients)