1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Add journal_entries to Graphene object types for all primary models

This commit is contained in:
jeremystretch
2021-08-03 13:58:08 -04:00
parent c416fce400
commit ea86321da8
7 changed files with 45 additions and 29 deletions

View File

@@ -1,5 +1,5 @@
from circuits import filtersets, models
from netbox.graphql.types import BaseObjectType, ObjectType, TaggedObjectType
from netbox.graphql.types import BaseObjectType, ObjectType, PrimaryObjectType
__all__ = (
'CircuitTerminationType',
@@ -18,7 +18,7 @@ class CircuitTerminationType(BaseObjectType):
filterset_class = filtersets.CircuitTerminationFilterSet
class CircuitType(TaggedObjectType):
class CircuitType(PrimaryObjectType):
class Meta:
model = models.Circuit
@@ -34,7 +34,7 @@ class CircuitTypeType(ObjectType):
filterset_class = filtersets.CircuitTypeFilterSet
class ProviderType(TaggedObjectType):
class ProviderType(PrimaryObjectType):
class Meta:
model = models.Provider
@@ -42,7 +42,7 @@ class ProviderType(TaggedObjectType):
filterset_class = filtersets.ProviderFilterSet
class ProviderNetworkType(TaggedObjectType):
class ProviderNetworkType(PrimaryObjectType):
class Meta:
model = models.ProviderNetwork

View File

@@ -1,7 +1,7 @@
from dcim import filtersets, models
from extras.graphql.mixins import ImageAttachmentsMixin
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
from netbox.graphql.types import BaseObjectType, ObjectType, TaggedObjectType
from netbox.graphql.types import BaseObjectType, ObjectType, PrimaryObjectType, TaggedObjectType
__all__ = (
'CableType',
@@ -40,7 +40,7 @@ __all__ = (
)
class CableType(TaggedObjectType):
class CableType(PrimaryObjectType):
class Meta:
model = models.Cable
@@ -98,7 +98,7 @@ class ConsoleServerPortTemplateType(BaseObjectType):
return self.type or None
class DeviceType(ImageAttachmentsMixin, TaggedObjectType):
class DeviceType(ImageAttachmentsMixin, PrimaryObjectType):
class Meta:
model = models.Device
@@ -133,7 +133,7 @@ class DeviceRoleType(ObjectType):
filterset_class = filtersets.DeviceRoleFilterSet
class DeviceTypeType(TaggedObjectType):
class DeviceTypeType(PrimaryObjectType):
class Meta:
model = models.DeviceType
@@ -211,7 +211,7 @@ class PlatformType(ObjectType):
filterset_class = filtersets.PlatformFilterSet
class PowerFeedType(TaggedObjectType):
class PowerFeedType(PrimaryObjectType):
class Meta:
model = models.PowerFeed
@@ -247,7 +247,7 @@ class PowerOutletTemplateType(BaseObjectType):
return self.type or None
class PowerPanelType(TaggedObjectType):
class PowerPanelType(PrimaryObjectType):
class Meta:
model = models.PowerPanel
@@ -277,7 +277,7 @@ class PowerPortTemplateType(BaseObjectType):
return self.type or None
class RackType(VLANGroupsMixin, ImageAttachmentsMixin, TaggedObjectType):
class RackType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
class Meta:
model = models.Rack
@@ -291,7 +291,7 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, TaggedObjectType):
return self.outer_unit or None
class RackReservationType(TaggedObjectType):
class RackReservationType(PrimaryObjectType):
class Meta:
model = models.RackReservation
@@ -331,7 +331,7 @@ class RegionType(VLANGroupsMixin, ObjectType):
filterset_class = filtersets.RegionFilterSet
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, TaggedObjectType):
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
class Meta:
model = models.Site
@@ -347,7 +347,7 @@ class SiteGroupType(VLANGroupsMixin, ObjectType):
filterset_class = filtersets.SiteGroupFilterSet
class VirtualChassisType(TaggedObjectType):
class VirtualChassisType(PrimaryObjectType):
class Meta:
model = models.VirtualChassis

View File

@@ -4,6 +4,7 @@ from graphene.types.generic import GenericScalar
__all__ = (
'CustomFieldsMixin',
'ImageAttachmentsMixin',
'JournalEntriesMixin',
'TagsMixin',
)
@@ -22,6 +23,13 @@ class ImageAttachmentsMixin:
return self.images.restrict(info.context.user, 'view')
class JournalEntriesMixin:
journal_entries = graphene.List('extras.graphql.types.JournalEntryType')
def resolve_journal_entries(self, info):
return self.journal_entries.restrict(info.context.user, 'view')
class TagsMixin:
tags = graphene.List(graphene.String)

View File

@@ -1,5 +1,5 @@
from ipam import filtersets, models
from netbox.graphql.types import ObjectType, TaggedObjectType
from netbox.graphql.types import ObjectType, PrimaryObjectType
__all__ = (
'AggregateType',
@@ -16,7 +16,7 @@ __all__ = (
)
class AggregateType(TaggedObjectType):
class AggregateType(PrimaryObjectType):
class Meta:
model = models.Aggregate
@@ -24,7 +24,7 @@ class AggregateType(TaggedObjectType):
filterset_class = filtersets.AggregateFilterSet
class IPAddressType(TaggedObjectType):
class IPAddressType(PrimaryObjectType):
class Meta:
model = models.IPAddress
@@ -35,7 +35,7 @@ class IPAddressType(TaggedObjectType):
return self.role or None
class IPRangeType(TaggedObjectType):
class IPRangeType(PrimaryObjectType):
class Meta:
model = models.IPRange
@@ -46,7 +46,7 @@ class IPRangeType(TaggedObjectType):
return self.role or None
class PrefixType(TaggedObjectType):
class PrefixType(PrimaryObjectType):
class Meta:
model = models.Prefix
@@ -70,7 +70,7 @@ class RoleType(ObjectType):
filterset_class = filtersets.RoleFilterSet
class RouteTargetType(TaggedObjectType):
class RouteTargetType(PrimaryObjectType):
class Meta:
model = models.RouteTarget
@@ -78,7 +78,7 @@ class RouteTargetType(TaggedObjectType):
filterset_class = filtersets.RouteTargetFilterSet
class ServiceType(TaggedObjectType):
class ServiceType(PrimaryObjectType):
class Meta:
model = models.Service
@@ -86,7 +86,7 @@ class ServiceType(TaggedObjectType):
filterset_class = filtersets.ServiceFilterSet
class VLANType(TaggedObjectType):
class VLANType(PrimaryObjectType):
class Meta:
model = models.VLAN
@@ -102,7 +102,7 @@ class VLANGroupType(ObjectType):
filterset_class = filtersets.VLANGroupFilterSet
class VRFType(TaggedObjectType):
class VRFType(PrimaryObjectType):
class Meta:
model = models.VRF

View File

@@ -1,7 +1,7 @@
from django.contrib.contenttypes.models import ContentType
from graphene_django import DjangoObjectType
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin
from extras.graphql.mixins import CustomFieldsMixin, JournalEntriesMixin, TagsMixin
__all__ = (
'BaseObjectType',
@@ -43,6 +43,14 @@ class TaggedObjectType(CustomFieldsMixin, TagsMixin, BaseObjectType):
abstract = True
class PrimaryObjectType(CustomFieldsMixin, JournalEntriesMixin, TagsMixin, BaseObjectType):
"""
Extends BaseObjectType with support for custom fields, tags, and journal entries.
"""
class Meta:
abstract = True
#
# Miscellaneous types
#

View File

@@ -1,5 +1,5 @@
from tenancy import filtersets, models
from netbox.graphql.types import ObjectType, TaggedObjectType
from netbox.graphql.types import ObjectType, PrimaryObjectType
__all__ = (
'TenantType',
@@ -7,7 +7,7 @@ __all__ = (
)
class TenantType(TaggedObjectType):
class TenantType(PrimaryObjectType):
class Meta:
model = models.Tenant

View File

@@ -1,6 +1,6 @@
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
from virtualization import filtersets, models
from netbox.graphql.types import ObjectType, TaggedObjectType
from netbox.graphql.types import ObjectType, PrimaryObjectType, TaggedObjectType
__all__ = (
'ClusterType',
@@ -11,7 +11,7 @@ __all__ = (
)
class ClusterType(VLANGroupsMixin, TaggedObjectType):
class ClusterType(VLANGroupsMixin, PrimaryObjectType):
class Meta:
model = models.Cluster
@@ -35,7 +35,7 @@ class ClusterTypeType(ObjectType):
filterset_class = filtersets.ClusterTypeFilterSet
class VirtualMachineType(TaggedObjectType):
class VirtualMachineType(PrimaryObjectType):
class Meta:
model = models.VirtualMachine