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 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
|
||||
|
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.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
|
||||
|
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