mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
9856 user and circuits base
This commit is contained in:
93
netbox/circuits/graphql/filters.py
Normal file
93
netbox/circuits/graphql/filters.py
Normal file
@ -0,0 +1,93 @@
|
||||
import strawberry
|
||||
from strawberry import auto
|
||||
from circuits import models, filtersets
|
||||
|
||||
__all__ = (
|
||||
'CircuitTerminationFilter',
|
||||
'CircuitFilter',
|
||||
'CircuitTypeFilter',
|
||||
'ProviderFilter',
|
||||
'ProviderAccountFilter',
|
||||
'ProviderNetworkFilter',
|
||||
)
|
||||
|
||||
|
||||
@strawberry.django.filter(models.CircuitTermination, lookups=True)
|
||||
class CircuitTerminationFilter(filtersets.CircuitTerminationFilterSet):
|
||||
id: auto
|
||||
term_side: auto
|
||||
port_speed: auto
|
||||
upstream_speed: auto
|
||||
xconnect_id: auto
|
||||
description: auto
|
||||
cable_end: auto
|
||||
# q: auto
|
||||
circuit_id: auto
|
||||
site_id: auto
|
||||
site: auto
|
||||
# provider_network_id: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(models.Circuit, lookups=True)
|
||||
class CircuitFilter(filtersets.CircuitFilterSet):
|
||||
id: auto
|
||||
cid: auto
|
||||
description: auto
|
||||
install_date: auto
|
||||
termination_date: auto
|
||||
commit_rate: auto
|
||||
provider_id: auto
|
||||
provider: auto
|
||||
provider_account_id: auto
|
||||
# provider_network_id: auto
|
||||
type_id: auto
|
||||
type: auto
|
||||
status: auto
|
||||
# region_id: auto
|
||||
# region: auto
|
||||
# site_group_id: auto
|
||||
# site_group: auto
|
||||
# site_id: auto
|
||||
# site: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(models.CircuitType, lookups=True)
|
||||
class CircuitTypeFilter(filtersets.CircuitTypeFilterSet):
|
||||
id: auto
|
||||
name: auto
|
||||
slug: auto
|
||||
description: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(models.Provider, lookups=True)
|
||||
class ProviderFilter(filtersets.ProviderFilterSet):
|
||||
id: auto
|
||||
name: auto
|
||||
slug: auto
|
||||
# region_id: auto
|
||||
# region: auto
|
||||
# site_group_id: auto
|
||||
# site_group: auto
|
||||
# site_id: auto
|
||||
# site: auto
|
||||
# asn_id: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(models.ProviderAccount, lookups=True)
|
||||
class ProviderAccountFilter(filtersets.ProviderAccountFilterSet):
|
||||
id: auto
|
||||
name: auto
|
||||
account: auto
|
||||
description: auto
|
||||
# provider_id: auto
|
||||
# provider: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(models.ProviderNetwork, lookups=True)
|
||||
class ProviderNetworkFilter(filtersets.ProviderNetworkFilterSet):
|
||||
id: auto
|
||||
name: auto
|
||||
service_id: auto
|
||||
description: auto
|
||||
# provider_id: auto
|
||||
# provider: auto
|
@ -1,41 +1,26 @@
|
||||
import graphene
|
||||
from typing import List
|
||||
import strawberry
|
||||
|
||||
from circuits import models
|
||||
from netbox.graphql.fields import ObjectField, ObjectListField
|
||||
from .types import *
|
||||
from utilities.graphql_optimizer import gql_query_optimizer
|
||||
|
||||
|
||||
class CircuitsQuery(graphene.ObjectType):
|
||||
circuit = ObjectField(CircuitType)
|
||||
circuit_list = ObjectListField(CircuitType)
|
||||
@strawberry.type
|
||||
class CircuitsQuery:
|
||||
circuit: CircuitType = strawberry.django.field()
|
||||
circuit_list: List[CircuitType] = strawberry.django.field()
|
||||
|
||||
def resolve_circuit_list(root, info, **kwargs):
|
||||
return gql_query_optimizer(models.Circuit.objects.all(), info)
|
||||
circuit_termination: CircuitTerminationType = strawberry.django.field()
|
||||
circuit_termination_list: List[CircuitTerminationType] = strawberry.django.field()
|
||||
|
||||
circuit_termination = ObjectField(CircuitTerminationType)
|
||||
circuit_termination_list = ObjectListField(CircuitTerminationType)
|
||||
circuit_type: CircuitTypeType = strawberry.django.field()
|
||||
circuit_type_list: List[CircuitTypeType] = strawberry.django.field()
|
||||
|
||||
def resolve_circuit_termination_list(root, info, **kwargs):
|
||||
return gql_query_optimizer(models.CircuitTermination.objects.all(), info)
|
||||
provider: ProviderType = strawberry.django.field()
|
||||
provider_list: List[ProviderType] = strawberry.django.field()
|
||||
|
||||
circuit_type = ObjectField(CircuitTypeType)
|
||||
circuit_type_list = ObjectListField(CircuitTypeType)
|
||||
provider_account: ProviderAccountType = strawberry.django.field()
|
||||
provider_account_list: List[ProviderAccountType] = strawberry.django.field()
|
||||
|
||||
def resolve_circuit_type_list(root, info, **kwargs):
|
||||
return gql_query_optimizer(models.CircuitType.objects.all(), info)
|
||||
|
||||
provider = ObjectField(ProviderType)
|
||||
provider_list = ObjectListField(ProviderType)
|
||||
|
||||
def resolve_provider_list(root, info, **kwargs):
|
||||
return gql_query_optimizer(models.Provider.objects.all(), info)
|
||||
|
||||
provider_account = ObjectField(ProviderAccountType)
|
||||
provider_account_list = ObjectListField(ProviderAccountType)
|
||||
|
||||
provider_network = ObjectField(ProviderNetworkType)
|
||||
provider_network_list = ObjectListField(ProviderNetworkType)
|
||||
|
||||
def resolve_provider_network_list(root, info, **kwargs):
|
||||
return gql_query_optimizer(models.ProviderNetwork.objects.all(), info)
|
||||
provider_network: ProviderNetworkType = strawberry.django.field()
|
||||
provider_network_list: List[ProviderNetworkType] = strawberry.django.field()
|
||||
|
@ -1,9 +1,10 @@
|
||||
import graphene
|
||||
import strawberry
|
||||
|
||||
from circuits import filtersets, models
|
||||
from dcim.graphql.mixins import CabledObjectMixin
|
||||
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin, ContactsMixin
|
||||
from netbox.graphql.types import ObjectType, OrganizationalObjectType, NetBoxObjectType
|
||||
from .filters import *
|
||||
|
||||
__all__ = (
|
||||
'CircuitTerminationType',
|
||||
@ -15,48 +16,61 @@ __all__ = (
|
||||
)
|
||||
|
||||
|
||||
class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, ObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.CircuitTermination
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.CircuitTerminationFilterSet
|
||||
@strawberry.django.type(
|
||||
models.CircuitTermination,
|
||||
fields='__all__',
|
||||
filters=CircuitTerminationFilter
|
||||
)
|
||||
class CircuitTerminationType:
|
||||
# class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, ObjectType):
|
||||
pass
|
||||
|
||||
|
||||
@strawberry.django.type(
|
||||
models.Circuit,
|
||||
fields='__all__',
|
||||
filters=CircuitFilter
|
||||
)
|
||||
class CircuitType(NetBoxObjectType, ContactsMixin):
|
||||
class Meta:
|
||||
model = models.Circuit
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.CircuitFilterSet
|
||||
# class CircuitType(NetBoxObjectType, ContactsMixin):
|
||||
pass
|
||||
|
||||
|
||||
class CircuitTypeType(OrganizationalObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.CircuitType
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.CircuitTypeFilterSet
|
||||
@strawberry.django.type(
|
||||
models.CircuitType,
|
||||
fields='__all__',
|
||||
filters=CircuitTypeFilter
|
||||
)
|
||||
class CircuitTypeType:
|
||||
# class CircuitTypeType(OrganizationalObjectType):
|
||||
pass
|
||||
|
||||
|
||||
class ProviderType(NetBoxObjectType, ContactsMixin):
|
||||
|
||||
class Meta:
|
||||
model = models.Provider
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ProviderFilterSet
|
||||
@strawberry.django.type(
|
||||
models.Provider,
|
||||
fields='__all__',
|
||||
filters=ProviderFilter
|
||||
)
|
||||
class ProviderType:
|
||||
# class ProviderType(NetBoxObjectType, ContactsMixin):
|
||||
pass
|
||||
|
||||
|
||||
class ProviderAccountType(NetBoxObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.ProviderAccount
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ProviderAccountFilterSet
|
||||
@strawberry.django.type(
|
||||
models.ProviderAccount,
|
||||
fields='__all__',
|
||||
filters=ProviderAccountFilter
|
||||
)
|
||||
class ProviderAccountType:
|
||||
# class ProviderAccountType(NetBoxObjectType):
|
||||
pass
|
||||
|
||||
|
||||
class ProviderNetworkType(NetBoxObjectType):
|
||||
|
||||
class Meta:
|
||||
model = models.ProviderNetwork
|
||||
fields = '__all__'
|
||||
filterset_class = filtersets.ProviderNetworkFilterSet
|
||||
@strawberry.django.type(
|
||||
models.ProviderNetwork,
|
||||
fields='__all__',
|
||||
filters=ProviderNetworkFilter
|
||||
)
|
||||
class ProviderNetworkType:
|
||||
# class ProviderNetworkType(NetBoxObjectType):
|
||||
pass
|
||||
|
@ -1,3 +1,4 @@
|
||||
import strawberry
|
||||
import graphene
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from graphene.types.generic import GenericScalar
|
||||
|
@ -1,11 +1,12 @@
|
||||
import strawberry
|
||||
from strawberry_django.optimizer import DjangoOptimizerExtension
|
||||
from strawberry.schema.config import StrawberryConfig
|
||||
from circuits.graphql.schema import CircuitsQuery
|
||||
from users.graphql.schema import UsersQuery
|
||||
|
||||
|
||||
@strawberry.type
|
||||
class Query(UsersQuery):
|
||||
class Query(CircuitsQuery, UsersQuery):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import graphene
|
||||
import strawberry
|
||||
from strawberry import auto
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from extras.graphql.mixins import (
|
||||
@ -7,7 +8,6 @@ from extras.graphql.mixins import (
|
||||
JournalEntriesMixin,
|
||||
TagsMixin,
|
||||
)
|
||||
from graphene_django import DjangoObjectType
|
||||
|
||||
__all__ = (
|
||||
'BaseObjectType',
|
||||
@ -21,20 +21,17 @@ __all__ = (
|
||||
# Base types
|
||||
#
|
||||
|
||||
class BaseObjectType(DjangoObjectType):
|
||||
class BaseObjectType:
|
||||
"""
|
||||
Base GraphQL object type for all NetBox objects. Restricts the model queryset to enforce object permissions.
|
||||
"""
|
||||
display = graphene.String()
|
||||
class_type = graphene.String()
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
display: auto
|
||||
class_type: auto
|
||||
|
||||
@classmethod
|
||||
def get_queryset(cls, queryset, info):
|
||||
# Enforce object permissions on the queryset
|
||||
return queryset.restrict(info.context.user, 'view')
|
||||
return queryset.restrict(info.context.request.user, 'view')
|
||||
|
||||
def resolve_display(parent, info, **kwargs):
|
||||
return str(parent)
|
||||
@ -50,8 +47,7 @@ class ObjectType(
|
||||
"""
|
||||
Base GraphQL object type for unclassified models which support change logging
|
||||
"""
|
||||
class Meta:
|
||||
abstract = True
|
||||
pass
|
||||
|
||||
|
||||
class OrganizationalObjectType(
|
||||
@ -63,8 +59,7 @@ class OrganizationalObjectType(
|
||||
"""
|
||||
Base type for organizational models
|
||||
"""
|
||||
class Meta:
|
||||
abstract = True
|
||||
pass
|
||||
|
||||
|
||||
class NetBoxObjectType(
|
||||
@ -77,15 +72,14 @@ class NetBoxObjectType(
|
||||
"""
|
||||
GraphQL type for most NetBox models. Includes support for custom fields, change logging, journaling, and tags.
|
||||
"""
|
||||
class Meta:
|
||||
abstract = True
|
||||
pass
|
||||
|
||||
|
||||
#
|
||||
# Miscellaneous types
|
||||
#
|
||||
|
||||
class ContentTypeType(DjangoObjectType):
|
||||
class ContentTypeType:
|
||||
|
||||
class Meta:
|
||||
model = ContentType
|
||||
|
28
netbox/users/graphql/filters.py
Normal file
28
netbox/users/graphql/filters.py
Normal file
@ -0,0 +1,28 @@
|
||||
import strawberry
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
from strawberry import auto
|
||||
from users import filtersets
|
||||
|
||||
__all__ = (
|
||||
'GroupFilter',
|
||||
'UserFilter',
|
||||
)
|
||||
|
||||
|
||||
@strawberry.django.filter(Group, lookups=True)
|
||||
class GroupFilter(filtersets.GroupFilterSet):
|
||||
id: auto
|
||||
name: auto
|
||||
|
||||
|
||||
@strawberry.django.filter(get_user_model(), lookups=True)
|
||||
class UserFilter(filtersets.UserFilterSet):
|
||||
id: auto
|
||||
username: auto
|
||||
first_name: auto
|
||||
last_name: auto
|
||||
email: auto
|
||||
is_staff: auto
|
||||
is_active: auto
|
||||
is_superuser: auto
|
@ -3,7 +3,6 @@ import strawberry
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
from netbox.graphql.fields import ObjectField, ObjectListField
|
||||
from .types import *
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user