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

View File

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

View File

@ -4,6 +4,7 @@ from graphene.types.generic import GenericScalar
__all__ = ( __all__ = (
'CustomFieldsMixin', 'CustomFieldsMixin',
'ImageAttachmentsMixin', 'ImageAttachmentsMixin',
'JournalEntriesMixin',
'TagsMixin', 'TagsMixin',
) )
@ -22,6 +23,13 @@ class ImageAttachmentsMixin:
return self.images.restrict(info.context.user, 'view') 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: class TagsMixin:
tags = graphene.List(graphene.String) tags = graphene.List(graphene.String)

View File

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

View File

@ -1,7 +1,7 @@
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from graphene_django import DjangoObjectType from graphene_django import DjangoObjectType
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin from extras.graphql.mixins import CustomFieldsMixin, JournalEntriesMixin, TagsMixin
__all__ = ( __all__ = (
'BaseObjectType', 'BaseObjectType',
@ -43,6 +43,14 @@ class TaggedObjectType(CustomFieldsMixin, TagsMixin, BaseObjectType):
abstract = True 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 # Miscellaneous types
# #

View File

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

View File

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