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