mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-09 09:59:37 -06:00
parent
099f3b2f34
commit
a611ade5d3
@ -12,6 +12,7 @@ __all__ = (
|
|||||||
'DeviceFaceEnum',
|
'DeviceFaceEnum',
|
||||||
'DeviceStatusEnum',
|
'DeviceStatusEnum',
|
||||||
'InterfaceDuplexEnum',
|
'InterfaceDuplexEnum',
|
||||||
|
'InterfaceKindEnum',
|
||||||
'InterfaceModeEnum',
|
'InterfaceModeEnum',
|
||||||
'InterfacePoEModeEnum',
|
'InterfacePoEModeEnum',
|
||||||
'InterfacePoETypeEnum',
|
'InterfacePoETypeEnum',
|
||||||
@ -48,6 +49,7 @@ DeviceAirflowEnum = strawberry.enum(DeviceAirflowChoices.as_enum(prefix='airflow
|
|||||||
DeviceFaceEnum = strawberry.enum(DeviceFaceChoices.as_enum(prefix='face'))
|
DeviceFaceEnum = strawberry.enum(DeviceFaceChoices.as_enum(prefix='face'))
|
||||||
DeviceStatusEnum = strawberry.enum(DeviceStatusChoices.as_enum(prefix='status'))
|
DeviceStatusEnum = strawberry.enum(DeviceStatusChoices.as_enum(prefix='status'))
|
||||||
InterfaceDuplexEnum = strawberry.enum(InterfaceDuplexChoices.as_enum(prefix='duplex'))
|
InterfaceDuplexEnum = strawberry.enum(InterfaceDuplexChoices.as_enum(prefix='duplex'))
|
||||||
|
InterfaceKindEnum = strawberry.enum(InterfaceKindChoices.as_enum(prefix='kind'))
|
||||||
InterfaceModeEnum = strawberry.enum(InterfaceModeChoices.as_enum(prefix='mode'))
|
InterfaceModeEnum = strawberry.enum(InterfaceModeChoices.as_enum(prefix='mode'))
|
||||||
InterfacePoEModeEnum = strawberry.enum(InterfacePoEModeChoices.as_enum(prefix='mode'))
|
InterfacePoEModeEnum = strawberry.enum(InterfacePoEModeChoices.as_enum(prefix='mode'))
|
||||||
InterfacePoETypeEnum = strawberry.enum(InterfacePoETypeChoices.as_enum())
|
InterfacePoETypeEnum = strawberry.enum(InterfacePoETypeChoices.as_enum())
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from typing import Annotated, TYPE_CHECKING
|
from typing import Annotated, TYPE_CHECKING
|
||||||
|
|
||||||
|
from django.db.models import Q
|
||||||
import strawberry
|
import strawberry
|
||||||
import strawberry_django
|
import strawberry_django
|
||||||
from strawberry.scalars import ID
|
from strawberry.scalars import ID
|
||||||
@ -7,6 +8,8 @@ from strawberry_django import FilterLookup
|
|||||||
|
|
||||||
from core.graphql.filter_mixins import ChangeLogFilterMixin
|
from core.graphql.filter_mixins import ChangeLogFilterMixin
|
||||||
from dcim import models
|
from dcim import models
|
||||||
|
from dcim.constants import *
|
||||||
|
from dcim.graphql.enums import InterfaceKindEnum
|
||||||
from extras.graphql.filter_mixins import ConfigContextFilterMixin
|
from extras.graphql.filter_mixins import ConfigContextFilterMixin
|
||||||
from netbox.graphql.filter_mixins import (
|
from netbox.graphql.filter_mixins import (
|
||||||
PrimaryModelFilterMixin,
|
PrimaryModelFilterMixin,
|
||||||
@ -485,6 +488,27 @@ class InterfaceFilter(ModularComponentModelFilterMixin, InterfaceBaseFilterMixin
|
|||||||
strawberry_django.filter_field()
|
strawberry_django.filter_field()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@strawberry_django.filter_field
|
||||||
|
def connected(self, queryset, value: bool, prefix: str):
|
||||||
|
if value is True:
|
||||||
|
return queryset, Q(**{f"{prefix}_path__is_active": True})
|
||||||
|
else:
|
||||||
|
return queryset, Q(**{f"{prefix}_path__isnull": True}) | Q(**{f"{prefix}_path__is_active": False})
|
||||||
|
|
||||||
|
@strawberry_django.filter_field
|
||||||
|
def kind(
|
||||||
|
self,
|
||||||
|
queryset,
|
||||||
|
value: Annotated['InterfaceKindEnum', strawberry.lazy('dcim.graphql.enums')],
|
||||||
|
prefix: str
|
||||||
|
):
|
||||||
|
if value == InterfaceKindEnum.KIND_PHYSICAL:
|
||||||
|
return queryset, ~Q(**{f"{prefix}type__in": NONCONNECTABLE_IFACE_TYPES})
|
||||||
|
elif value == InterfaceKindEnum.KIND_VIRTUAL:
|
||||||
|
return queryset, Q(**{f"{prefix}type__in": VIRTUAL_IFACE_TYPES})
|
||||||
|
elif value == InterfaceKindEnum.KIND_WIRELESS:
|
||||||
|
return queryset, Q(**{f"{prefix}type__in": WIRELESS_IFACE_TYPES})
|
||||||
|
|
||||||
|
|
||||||
@strawberry_django.filter_type(models.InterfaceTemplate, lookups=True)
|
@strawberry_django.filter_type(models.InterfaceTemplate, lookups=True)
|
||||||
class InterfaceTemplateFilter(ModularComponentTemplateFilterMixin):
|
class InterfaceTemplateFilter(ModularComponentTemplateFilterMixin):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user