mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
#6732 - Add graphql support for new ASN model and fix ASN overflow on longs
This commit is contained in:
@ -1,8 +1,11 @@
|
|||||||
|
import graphene
|
||||||
|
|
||||||
from dcim import filtersets, models
|
from dcim import filtersets, models
|
||||||
from extras.graphql.mixins import (
|
from extras.graphql.mixins import (
|
||||||
ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin,
|
ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin,
|
||||||
)
|
)
|
||||||
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
|
||||||
|
from ipam.graphql.scalars import ASNField
|
||||||
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -374,6 +377,7 @@ class RegionType(VLANGroupsMixin, OrganizationalObjectType):
|
|||||||
|
|
||||||
|
|
||||||
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
|
||||||
|
asn = graphene.Field(ASNField)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Site
|
model = models.Site
|
||||||
|
5
netbox/ipam/graphql/scalars.py
Normal file
5
netbox/ipam/graphql/scalars.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from netbox.graphql.scalars import BigInt
|
||||||
|
|
||||||
|
|
||||||
|
class ASNField(BigInt):
|
||||||
|
pass
|
@ -1,4 +1,7 @@
|
|||||||
|
import graphene
|
||||||
|
|
||||||
from ipam import filtersets, models
|
from ipam import filtersets, models
|
||||||
|
from ipam.graphql.scalars import ASNField
|
||||||
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
|
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -18,6 +21,7 @@ __all__ = (
|
|||||||
|
|
||||||
|
|
||||||
class ASNType(PrimaryObjectType):
|
class ASNType(PrimaryObjectType):
|
||||||
|
asn = graphene.Field(ASNField)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ASN
|
model = models.ASN
|
||||||
|
23
netbox/netbox/graphql/scalars.py
Normal file
23
netbox/netbox/graphql/scalars.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from graphene import Scalar
|
||||||
|
from graphql.language import ast
|
||||||
|
from graphql.type.scalars import MAX_INT, MIN_INT
|
||||||
|
|
||||||
|
|
||||||
|
class BigInt(Scalar):
|
||||||
|
"""
|
||||||
|
Handle any BigInts
|
||||||
|
"""
|
||||||
|
@staticmethod
|
||||||
|
def to_float(value):
|
||||||
|
num = int(value)
|
||||||
|
if num > MAX_INT or num < MIN_INT:
|
||||||
|
return float(num)
|
||||||
|
return num
|
||||||
|
|
||||||
|
serialize = to_float
|
||||||
|
parse_value = to_float
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_literal(node):
|
||||||
|
if isinstance(node, ast.IntValue):
|
||||||
|
return BigInt.to_float(node.value)
|
Reference in New Issue
Block a user