1
0
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:
Daniel Sheppard
2021-10-28 11:49:59 -05:00
parent 3c261b05d9
commit de5c9ef4b2
4 changed files with 36 additions and 0 deletions

View File

@ -1,8 +1,11 @@
import graphene
from dcim import filtersets, models
from extras.graphql.mixins import (
ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin,
)
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
from ipam.graphql.scalars import ASNField
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
__all__ = (
@ -374,6 +377,7 @@ class RegionType(VLANGroupsMixin, OrganizationalObjectType):
class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType):
asn = graphene.Field(ASNField)
class Meta:
model = models.Site

View File

@ -0,0 +1,5 @@
from netbox.graphql.scalars import BigInt
class ASNField(BigInt):
pass

View File

@ -1,4 +1,7 @@
import graphene
from ipam import filtersets, models
from ipam.graphql.scalars import ASNField
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
__all__ = (
@ -18,6 +21,7 @@ __all__ = (
class ASNType(PrimaryObjectType):
asn = graphene.Field(ASNField)
class Meta:
model = models.ASN

View 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)