mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Add GraphQL for extras
This commit is contained in:
0
netbox/extras/graphql/__init__.py
Normal file
0
netbox/extras/graphql/__init__.py
Normal file
30
netbox/extras/graphql/schema.py
Normal file
30
netbox/extras/graphql/schema.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import graphene
|
||||||
|
|
||||||
|
from netbox.graphql.fields import ObjectField, ObjectListField
|
||||||
|
from .types import *
|
||||||
|
|
||||||
|
|
||||||
|
class ExtrasQuery(graphene.ObjectType):
|
||||||
|
config_context = ObjectField(ConfigContextType)
|
||||||
|
config_contexts = ObjectListField(ConfigContextType)
|
||||||
|
|
||||||
|
custom_field = ObjectField(CustomFieldType)
|
||||||
|
custom_fields = ObjectListField(CustomFieldType)
|
||||||
|
|
||||||
|
custom_link = ObjectField(CustomLinkType)
|
||||||
|
custom_links = ObjectListField(CustomLinkType)
|
||||||
|
|
||||||
|
export_template = ObjectField(ExportTemplateType)
|
||||||
|
export_templates = ObjectListField(ExportTemplateType)
|
||||||
|
|
||||||
|
image_attachment = ObjectField(ImageAttachmentType)
|
||||||
|
image_attachments = ObjectListField(ImageAttachmentType)
|
||||||
|
|
||||||
|
journal_entry = ObjectField(JournalEntryType)
|
||||||
|
journal_entries = ObjectListField(JournalEntryType)
|
||||||
|
|
||||||
|
tag = ObjectField(TagType)
|
||||||
|
tags = ObjectListField(TagType)
|
||||||
|
|
||||||
|
webhook = ObjectField(WebhookType)
|
||||||
|
webhooks = ObjectListField(WebhookType)
|
77
netbox/extras/graphql/types.py
Normal file
77
netbox/extras/graphql/types.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
from extras import filtersets, models
|
||||||
|
from netbox.graphql.types import BaseObjectType
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'ConfigContextType',
|
||||||
|
'CustomFieldType',
|
||||||
|
'CustomLinkType',
|
||||||
|
'ExportTemplateType',
|
||||||
|
'ImageAttachmentType',
|
||||||
|
'JournalEntryType',
|
||||||
|
'TagType',
|
||||||
|
'WebhookType',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigContextType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ConfigContext
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.ConfigContextFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class CustomFieldType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.CustomField
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.CustomFieldFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class CustomLinkType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.CustomLink
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.CustomLinkFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class ExportTemplateType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ExportTemplate
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.ExportTemplateFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class ImageAttachmentType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ImageAttachment
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.ImageAttachmentFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class JournalEntryType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.JournalEntry
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.JournalEntryFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class TagType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Tag
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.TagFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class WebhookType(BaseObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Webhook
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.WebhookFilterSet
|
@ -31,7 +31,7 @@ class AppTest(APITestCase):
|
|||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
class WebhookTest(APIViewTestCases.APIViewTestCase):
|
class WebhookTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = Webhook
|
model = Webhook
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
@ -85,7 +85,7 @@ class WebhookTest(APIViewTestCases.APIViewTestCase):
|
|||||||
webhook.content_types.add(site_ct, rack_ct)
|
webhook.content_types.add(site_ct, rack_ct)
|
||||||
|
|
||||||
|
|
||||||
class CustomFieldTest(APIViewTestCases.APIViewTestCase):
|
class CustomFieldTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = CustomField
|
model = CustomField
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
@ -132,7 +132,7 @@ class CustomFieldTest(APIViewTestCases.APIViewTestCase):
|
|||||||
cf.content_types.add(site_ct)
|
cf.content_types.add(site_ct)
|
||||||
|
|
||||||
|
|
||||||
class CustomLinkTest(APIViewTestCases.APIViewTestCase):
|
class CustomLinkTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = CustomLink
|
model = CustomLink
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
@ -186,7 +186,7 @@ class CustomLinkTest(APIViewTestCases.APIViewTestCase):
|
|||||||
CustomLink.objects.bulk_create(custom_links)
|
CustomLink.objects.bulk_create(custom_links)
|
||||||
|
|
||||||
|
|
||||||
class ExportTemplateTest(APIViewTestCases.APIViewTestCase):
|
class ExportTemplateTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = ExportTemplate
|
model = ExportTemplate
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
@ -234,7 +234,7 @@ class ExportTemplateTest(APIViewTestCases.APIViewTestCase):
|
|||||||
ExportTemplate.objects.bulk_create(export_templates)
|
ExportTemplate.objects.bulk_create(export_templates)
|
||||||
|
|
||||||
|
|
||||||
class TagTest(APIViewTestCases.APIViewTestCase):
|
class TagTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = Tag
|
model = Tag
|
||||||
brief_fields = ['color', 'display', 'id', 'name', 'slug', 'url']
|
brief_fields = ['color', 'display', 'id', 'name', 'slug', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
@ -270,7 +270,8 @@ class TagTest(APIViewTestCases.APIViewTestCase):
|
|||||||
class ImageAttachmentTest(
|
class ImageAttachmentTest(
|
||||||
APIViewTestCases.GetObjectViewTestCase,
|
APIViewTestCases.GetObjectViewTestCase,
|
||||||
APIViewTestCases.ListObjectsViewTestCase,
|
APIViewTestCases.ListObjectsViewTestCase,
|
||||||
APIViewTestCases.DeleteObjectViewTestCase
|
APIViewTestCases.DeleteObjectViewTestCase,
|
||||||
|
APIViewTestCases.GraphQLTestCase
|
||||||
):
|
):
|
||||||
model = ImageAttachment
|
model = ImageAttachment
|
||||||
brief_fields = ['display', 'id', 'image', 'name', 'url']
|
brief_fields = ['display', 'id', 'image', 'name', 'url']
|
||||||
@ -310,7 +311,7 @@ class ImageAttachmentTest(
|
|||||||
ImageAttachment.objects.bulk_create(image_attachments)
|
ImageAttachment.objects.bulk_create(image_attachments)
|
||||||
|
|
||||||
|
|
||||||
class JournalEntryTest(APIViewTestCases.APIViewTestCase):
|
class JournalEntryTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = JournalEntry
|
model = JournalEntry
|
||||||
brief_fields = ['created', 'display', 'id', 'url']
|
brief_fields = ['created', 'display', 'id', 'url']
|
||||||
bulk_update_data = {
|
bulk_update_data = {
|
||||||
@ -360,7 +361,7 @@ class JournalEntryTest(APIViewTestCases.APIViewTestCase):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class ConfigContextTest(APIViewTestCases.APIViewTestCase):
|
class ConfigContextTest(APIViewTestCases.GraphQLTestCase, APIViewTestCases.APIViewTestCase):
|
||||||
model = ConfigContext
|
model = ConfigContext
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
create_data = [
|
create_data = [
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import graphene
|
import graphene
|
||||||
|
|
||||||
from circuits.graphql.schema import CircuitsQuery
|
from circuits.graphql.schema import CircuitsQuery
|
||||||
|
from extras.graphql.schema import ExtrasQuery
|
||||||
from ipam.graphql.schema import IPAMQuery
|
from ipam.graphql.schema import IPAMQuery
|
||||||
|
|
||||||
|
|
||||||
class Query(
|
class Query(
|
||||||
CircuitsQuery,
|
CircuitsQuery,
|
||||||
|
ExtrasQuery,
|
||||||
IPAMQuery,
|
IPAMQuery,
|
||||||
graphene.ObjectType
|
graphene.ObjectType
|
||||||
):
|
):
|
||||||
|
@ -26,13 +26,13 @@ class ObjectType(BaseObjectType):
|
|||||||
"""
|
"""
|
||||||
Extends BaseObjectType with support for custom field data.
|
Extends BaseObjectType with support for custom field data.
|
||||||
"""
|
"""
|
||||||
custom_fields = GenericScalar()
|
# custom_fields = GenericScalar()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def resolve_custom_fields(self, info):
|
# def resolve_custom_fields(self, info):
|
||||||
return self.custom_field_data
|
# return self.custom_field_data
|
||||||
|
|
||||||
|
|
||||||
class TaggedObjectType(ObjectType):
|
class TaggedObjectType(ObjectType):
|
||||||
|
Reference in New Issue
Block a user