Просмотр исходного кода

Clean up GraphQL object types & tests

jeremystretch 4 лет назад
Родитель
Сommit
ef3cb9544a

+ 53 - 2
netbox/dcim/graphql/types.py

@@ -45,6 +45,12 @@ class CableType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.CableFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
+    def resolve_length_unit(self, info):
+        return self.length_unit or None
+
 
 class ConsolePortType(TaggedObjectType):
 
@@ -53,6 +59,9 @@ class ConsolePortType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.ConsolePortFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class ConsolePortTemplateType(BaseObjectType):
 
@@ -61,6 +70,9 @@ class ConsolePortTemplateType(BaseObjectType):
         fields = '__all__'
         filterset_class = filtersets.ConsolePortTemplateFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class ConsoleServerPortType(TaggedObjectType):
 
@@ -69,6 +81,9 @@ class ConsoleServerPortType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.ConsoleServerPortFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class ConsoleServerPortTemplateType(BaseObjectType):
 
@@ -77,6 +92,9 @@ class ConsoleServerPortTemplateType(BaseObjectType):
         fields = '__all__'
         filterset_class = filtersets.ConsoleServerPortTemplateFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class DeviceType(TaggedObjectType):
 
@@ -85,6 +103,9 @@ class DeviceType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.DeviceFilterSet
 
+    def resolve_face(self, info):
+        return self.face or None
+
 
 class DeviceBayType(TaggedObjectType):
 
@@ -117,6 +138,9 @@ class DeviceTypeType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.DeviceTypeFilterSet
 
+    def resolve_subdevice_role(self, info):
+        return self.subdevice_role or None
+
 
 class FrontPortType(TaggedObjectType):
 
@@ -141,6 +165,9 @@ class InterfaceType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.InterfaceFilterSet
 
+    def resolve_mode(self, info):
+        return self.mode or None
+
 
 class InterfaceTemplateType(BaseObjectType):
 
@@ -150,7 +177,7 @@ class InterfaceTemplateType(BaseObjectType):
         filterset_class = filtersets.InterfaceTemplateFilterSet
 
 
-class InventoryItemType(ObjectType):
+class InventoryItemType(TaggedObjectType):
 
     class Meta:
         model = models.InventoryItem
@@ -158,7 +185,7 @@ class InventoryItemType(ObjectType):
         filterset_class = filtersets.InventoryItemFilterSet
 
 
-class LocationType(TaggedObjectType):
+class LocationType(ObjectType):
 
     class Meta:
         model = models.Location
@@ -197,6 +224,12 @@ class PowerOutletType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.PowerOutletFilterSet
 
+    def resolve_feed_leg(self, info):
+        return self.feed_leg or None
+
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class PowerOutletTemplateType(BaseObjectType):
 
@@ -205,6 +238,12 @@ class PowerOutletTemplateType(BaseObjectType):
         fields = '__all__'
         filterset_class = filtersets.PowerOutletTemplateFilterSet
 
+    def resolve_feed_leg(self, info):
+        return self.feed_leg or None
+
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class PowerPanelType(TaggedObjectType):
 
@@ -221,6 +260,9 @@ class PowerPortType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.PowerPortFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class PowerPortTemplateType(BaseObjectType):
 
@@ -229,6 +271,9 @@ class PowerPortTemplateType(BaseObjectType):
         fields = '__all__'
         filterset_class = filtersets.PowerPortTemplateFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
 
 class RackType(TaggedObjectType):
 
@@ -237,6 +282,12 @@ class RackType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.RackFilterSet
 
+    def resolve_type(self, info):
+        return self.type or None
+
+    def resolve_outer_unit(self, info):
+        return self.outer_unit or None
+
 
 class RackReservationType(TaggedObjectType):
 

+ 25 - 5
netbox/dcim/tests/test_api.py

@@ -1005,7 +1005,11 @@ class DeviceTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestC
         self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST)
 
 
-class ConsolePortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase):
+class ConsolePortTest(
+    Mixins.ComponentTraceMixin,
+    APIViewTestCases.GraphQLTestCase,
+    APIViewTestCases.APIViewTestCase
+):
     model = ConsolePort
     brief_fields = ['_occupied', 'cable', 'device', 'display', 'id', 'name', 'url']
     bulk_update_data = {
@@ -1044,7 +1048,11 @@ class ConsolePortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCa
         ]
 
 
-class ConsoleServerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase):
+class ConsoleServerPortTest(
+    Mixins.ComponentTraceMixin,
+    APIViewTestCases.GraphQLTestCase,
+    APIViewTestCases.APIViewTestCase
+):
     model = ConsoleServerPort
     brief_fields = ['_occupied', 'cable', 'device', 'display', 'id', 'name', 'url']
     bulk_update_data = {
@@ -1083,7 +1091,11 @@ class ConsoleServerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIView
         ]
 
 
-class PowerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase):
+class PowerPortTest(
+    Mixins.ComponentTraceMixin,
+    APIViewTestCases.GraphQLTestCase,
+    APIViewTestCases.APIViewTestCase
+):
     model = PowerPort
     brief_fields = ['_occupied', 'cable', 'device', 'display', 'id', 'name', 'url']
     bulk_update_data = {
@@ -1122,7 +1134,11 @@ class PowerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
         ]
 
 
-class PowerOutletTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase):
+class PowerOutletTest(
+    Mixins.ComponentTraceMixin,
+    APIViewTestCases.GraphQLTestCase,
+    APIViewTestCases.APIViewTestCase
+):
     model = PowerOutlet
     brief_fields = ['_occupied', 'cable', 'device', 'display', 'id', 'name', 'url']
     bulk_update_data = {
@@ -1161,7 +1177,11 @@ class PowerOutletTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCa
         ]
 
 
-class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase):
+class InterfaceTest(
+    Mixins.ComponentTraceMixin,
+    APIViewTestCases.GraphQLTestCase,
+    APIViewTestCases.APIViewTestCase
+):
     model = Interface
     brief_fields = ['_occupied', 'cable', 'device', 'display', 'id', 'name', 'url']
     bulk_update_data = {

+ 1 - 1
netbox/extras/graphql/types.py

@@ -65,7 +65,7 @@ class TagType(BaseObjectType):
 
     class Meta:
         model = models.Tag
-        fields = '__all__'
+        exclude = ('extras_taggeditem_items',)
         filterset_class = filtersets.TagFilterSet
 
 

+ 3 - 0
netbox/ipam/graphql/types.py

@@ -30,6 +30,9 @@ class IPAddressType(TaggedObjectType):
         fields = '__all__'
         filterset_class = filtersets.IPAddressFilterSet
 
+    def resolve_role(self, info):
+        return self.role or None
+
 
 class PrefixType(TaggedObjectType):
 

+ 2 - 2
netbox/tenancy/graphql/types.py

@@ -7,7 +7,7 @@ __all__ = (
 )
 
 
-class TenantType(ObjectType):
+class TenantType(TaggedObjectType):
 
     class Meta:
         model = models.Tenant
@@ -15,7 +15,7 @@ class TenantType(ObjectType):
         filterset_class = filtersets.TenantFilterSet
 
 
-class TenantGroupType(TaggedObjectType):
+class TenantGroupType(ObjectType):
 
     class Meta:
         model = models.TenantGroup

+ 4 - 1
netbox/virtualization/graphql/types.py

@@ -42,9 +42,12 @@ class VirtualMachineType(TaggedObjectType):
         filterset_class = filtersets.VirtualMachineFilterSet
 
 
-class VMInterfaceType(ObjectType):
+class VMInterfaceType(TaggedObjectType):
 
     class Meta:
         model = models.VMInterface
         fields = '__all__'
         filterset_class = filtersets.VMInterfaceFilterSet
+
+    def resolve_mode(self, info):
+        return self.mode or None