From 1cceba591d3a38442a27142c4903a7b130020968 Mon Sep 17 00:00:00 2001 From: Anders Harrisson <anders.harrisson@ess.eu> Date: Fri, 14 Feb 2025 12:45:17 +0100 Subject: [PATCH] Fix api serialization and view sets --- netbox_awx_plugin/api/serializers.py | 23 +++++++++++++++++++++-- netbox_awx_plugin/api/urls.py | 10 ++++++++++ netbox_awx_plugin/api/views.py | 12 ++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 netbox_awx_plugin/api/urls.py create mode 100644 netbox_awx_plugin/api/views.py diff --git a/netbox_awx_plugin/api/serializers.py b/netbox_awx_plugin/api/serializers.py index b31c04f..7359383 100644 --- a/netbox_awx_plugin/api/serializers.py +++ b/netbox_awx_plugin/api/serializers.py @@ -1,9 +1,14 @@ +from rest_framework import serializers + from netbox.api.serializers import NetBoxModelSerializer from ..models import AWX, AWXInventory - class AWXSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='plugins-api:netbox_awx_plugin-api:awx-detail' + ) + class Meta: model = AWX fields = ( @@ -17,18 +22,32 @@ class AWXSerializer(NetBoxModelSerializer): "created", "last_updated", ) + brief_fields = ( + "id", + "display", + "name", + "url", + ) class AWXInventorySerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='plugins-api:netbox_awx_plugin-api:awxinventory-detail' + ) + class Meta: model = AWXInventory fields = ( "id", "display", - "awx", "inventory_id", "tags", "custom_fields", "created", "last_updated", ) + brief_fields = ( + "id", + "display", + "inventory_id", + ) diff --git a/netbox_awx_plugin/api/urls.py b/netbox_awx_plugin/api/urls.py new file mode 100644 index 0000000..02f571f --- /dev/null +++ b/netbox_awx_plugin/api/urls.py @@ -0,0 +1,10 @@ +from netbox.api.routers import NetBoxRouter +from . import views + +app_name = 'netbox_awx_plugin' + +router = NetBoxRouter() +router.register('awxs', views.AWXViewSet) +router.register('awxinventories', views.AWXInventoryViewSet) + +urlpatterns = router.urls diff --git a/netbox_awx_plugin/api/views.py b/netbox_awx_plugin/api/views.py new file mode 100644 index 0000000..04d6ebd --- /dev/null +++ b/netbox_awx_plugin/api/views.py @@ -0,0 +1,12 @@ +from netbox.api.viewsets import NetBoxModelViewSet + +from .. import filtersets, models +from .serializers import AWXSerializer, AWXInventorySerializer + +class AWXViewSet(NetBoxModelViewSet): + queryset = models.AWX.objects.prefetch_related('tags') + serializer_class = AWXSerializer + +class AWXInventoryViewSet(NetBoxModelViewSet): + queryset = models.AWXInventory.objects.prefetch_related('tags') + serializer_class = AWXInventorySerializer -- GitLab