mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-12 19:39:35 -06:00
Add filters for missing fields and for enums in filter_mixins files
This commit is contained in:
parent
45fc354d45
commit
5143003c68
11
netbox/core/graphql/enums.py
Normal file
11
netbox/core/graphql/enums.py
Normal file
@ -0,0 +1,11 @@
|
||||
import strawberry
|
||||
|
||||
from core.choices import *
|
||||
|
||||
__all__ = (
|
||||
'DataSourceStatusEnum',
|
||||
'ObjectChangeActionEnum',
|
||||
)
|
||||
|
||||
DataSourceStatusEnum = strawberry.enum(DataSourceStatusChoices.as_enum(prefix='status'))
|
||||
ObjectChangeActionEnum = strawberry.enum(ObjectChangeActionChoices.as_enum(prefix='action'))
|
||||
@ -29,6 +29,7 @@ class BaseObjectTypeFilterMixin(BaseFilterMixin):
|
||||
@dataclass
|
||||
class ChangeLogFilterMixin(BaseFilterMixin):
|
||||
id: FilterLookup[ID] | None = strawberry_django.filter_field()
|
||||
# TODO: "changelog" is not a valid field name; needs to be updated for ObjectChange
|
||||
changelog: Annotated['ObjectChangeFilter', strawberry.lazy('core.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
@ -5,11 +5,12 @@ import strawberry
|
||||
import strawberry_django
|
||||
from django.contrib.contenttypes.models import ContentType as DjangoContentType
|
||||
from strawberry.scalars import ID
|
||||
from strawberry_django import DatetimeFilterLookup, FilterLookup
|
||||
from strawberry_django import BaseFilterLookup, DatetimeFilterLookup, FilterLookup
|
||||
|
||||
from core import models
|
||||
from core.graphql.filter_mixins import BaseFilterMixin
|
||||
from netbox.graphql.filter_mixins import PrimaryModelFilterMixin
|
||||
from .enums import *
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from netbox.graphql.filter_lookups import IntegerLookup, JSONFilter
|
||||
@ -44,7 +45,9 @@ class DataSourceFilter(PrimaryModelFilterMixin):
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
type: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
source_url: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
status: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
status: (
|
||||
BaseFilterLookup[Annotated['DataSourceStatusEnum', strawberry.lazy('core.graphql.enums')]] | None
|
||||
) = strawberry_django.filter_field()
|
||||
enabled: FilterLookup[bool] | None = strawberry_django.filter_field()
|
||||
ignore_rules: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
parameters: Annotated['JSONFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
@ -63,7 +66,9 @@ class ObjectChangeFilter(BaseFilterMixin):
|
||||
user: Annotated['UserFilter', strawberry.lazy('users.graphql.filters')] | None = strawberry_django.filter_field()
|
||||
user_name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
request_id: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
action: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
action: (
|
||||
BaseFilterLookup[Annotated['ObjectChangeActionEnum', strawberry.lazy('core.graphql.enums')]] | None
|
||||
) = strawberry_django.filter_field()
|
||||
changed_object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
@ -28,11 +28,13 @@ __all__ = (
|
||||
'PowerFeedSupplyEnum',
|
||||
'PowerFeedTypeEnum',
|
||||
'PowerOutletFeedLegEnum',
|
||||
'PowerOutletStatusEnum',
|
||||
'PowerOutletTypeEnum',
|
||||
'PowerPortTypeEnum',
|
||||
'RackAirflowEnum',
|
||||
'RackDimensionUnitEnum',
|
||||
'RackFormFactorEnum',
|
||||
'RackReservationStatusEnum',
|
||||
'RackStatusEnum',
|
||||
'RackWidthEnum',
|
||||
'SiteStatusEnum',
|
||||
@ -65,11 +67,13 @@ PowerFeedStatusEnum = strawberry.enum(PowerFeedStatusChoices.as_enum(prefix='sta
|
||||
PowerFeedSupplyEnum = strawberry.enum(PowerFeedSupplyChoices.as_enum(prefix='supply'))
|
||||
PowerFeedTypeEnum = strawberry.enum(PowerFeedTypeChoices.as_enum(prefix='type'))
|
||||
PowerOutletFeedLegEnum = strawberry.enum(PowerOutletFeedLegChoices.as_enum(prefix='feed_leg'))
|
||||
PowerOutletStatusEnum = strawberry.enum(PowerOutletStatusChoices.as_enum(prefix='status'))
|
||||
PowerOutletTypeEnum = strawberry.enum(PowerOutletTypeChoices.as_enum(prefix='type'))
|
||||
PowerPortTypeEnum = strawberry.enum(PowerPortTypeChoices.as_enum(prefix='type'))
|
||||
RackAirflowEnum = strawberry.enum(RackAirflowChoices.as_enum())
|
||||
RackDimensionUnitEnum = strawberry.enum(RackDimensionUnitChoices.as_enum(prefix='unit'))
|
||||
RackFormFactorEnum = strawberry.enum(RackFormFactorChoices.as_enum(prefix='type'))
|
||||
RackReservationStatusEnum = strawberry.enum(RackReservationStatusChoices.as_enum(prefix='status'))
|
||||
RackStatusEnum = strawberry.enum(RackStatusChoices.as_enum(prefix='status'))
|
||||
RackWidthEnum = strawberry.enum(RackWidthChoices.as_enum(prefix='width'))
|
||||
SiteStatusEnum = strawberry.enum(SiteStatusChoices.as_enum(prefix='status'))
|
||||
|
||||
@ -4,7 +4,7 @@ from typing import Annotated, TYPE_CHECKING
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry import ID
|
||||
from strawberry_django import FilterLookup
|
||||
from strawberry_django import BaseFilterLookup, FilterLookup
|
||||
|
||||
from core.graphql.filter_mixins import BaseFilterMixin, ChangeLogFilterMixin
|
||||
from core.graphql.filters import ContentTypeFilter
|
||||
@ -60,7 +60,9 @@ class ModularComponentModelFilterMixin(ComponentModelFilterMixin):
|
||||
class CabledObjectModelFilterMixin(BaseFilterMixin):
|
||||
cable: Annotated['CableFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
|
||||
cable_id: ID | None = strawberry_django.filter_field()
|
||||
cable_end: CableEndEnum | None = strawberry_django.filter_field()
|
||||
cable_end: (
|
||||
BaseFilterLookup[Annotated['CableEndEnum', strawberry.lazy('dcim.graphql.enums')]] | None
|
||||
) = strawberry_django.filter_field()
|
||||
mark_connected: FilterLookup[bool] | None = strawberry_django.filter_field()
|
||||
|
||||
|
||||
@ -96,7 +98,9 @@ class InterfaceBaseFilterMixin(BaseFilterMixin):
|
||||
mtu: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
mode: InterfaceModeEnum | None = strawberry_django.filter_field()
|
||||
mode: (
|
||||
BaseFilterLookup[Annotated['InterfaceModeEnum', strawberry.lazy('dcim.graphql.enums')]] | None
|
||||
) = strawberry_django.filter_field()
|
||||
bridge: Annotated['InterfaceFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
@ -110,8 +114,9 @@ class InterfaceBaseFilterMixin(BaseFilterMixin):
|
||||
qinq_svlan: Annotated['VLANFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vlan_translation_policy: Annotated['VLANTranslationPolicyFilter', strawberry.lazy('ipam.graphql.filters')] | None \
|
||||
= strawberry_django.filter_field()
|
||||
vlan_translation_policy: (
|
||||
Annotated['VLANTranslationPolicyFilter', strawberry.lazy('ipam.graphql.filters')] | None
|
||||
) = strawberry_django.filter_field()
|
||||
primary_mac_address: Annotated['MACAddressFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
@ -120,7 +125,9 @@ class InterfaceBaseFilterMixin(BaseFilterMixin):
|
||||
|
||||
@dataclass
|
||||
class RackBaseFilterMixin(WeightFilterMixin, PrimaryModelFilterMixin):
|
||||
width: Annotated['RackWidthEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
|
||||
width: BaseFilterLookup[Annotated['RackWidthEnum', strawberry.lazy('dcim.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
u_height: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
@ -137,7 +144,7 @@ class RackBaseFilterMixin(WeightFilterMixin, PrimaryModelFilterMixin):
|
||||
outer_depth: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
outer_unit: Annotated['RackDimensionUnitEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
|
||||
outer_unit: BaseFilterLookup[Annotated['RackDimensionUnitEnum', strawberry.lazy('dcim.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
mounting_depth: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
from django.db.models import Q
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry.scalars import ID
|
||||
@ -810,6 +809,9 @@ class PowerOutletFilter(ModularComponentModelFilterMixin, CabledObjectModelFilte
|
||||
color: BaseFilterLookup[Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
status: BaseFilterLookup[Annotated['PowerOutletStatusEnum', strawberry.lazy('dcim.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.PowerOutletTemplate, lookups=True)
|
||||
@ -924,6 +926,9 @@ class RackReservationFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
|
||||
user: Annotated['UserFilter', strawberry.lazy('users.graphql.filters')] | None = strawberry_django.filter_field()
|
||||
user_id: ID | None = strawberry_django.filter_field()
|
||||
description: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
status: BaseFilterLookup[Annotated['RackReservationStatusEnum', strawberry.lazy('dcim.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.RackRole, lookups=True)
|
||||
|
||||
@ -5,7 +5,7 @@ from typing import TypeVar, TYPE_CHECKING, Annotated
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry import ID
|
||||
from strawberry_django import FilterLookup, DatetimeFilterLookup
|
||||
from strawberry_django import BaseFilterLookup, FilterLookup, DatetimeFilterLookup
|
||||
|
||||
from core.graphql.filter_mixins import BaseFilterMixin, BaseObjectTypeFilterMixin, ChangeLogFilterMixin
|
||||
from extras.graphql.filter_mixins import CustomFieldsFilterMixin, JournalEntriesFilterMixin, TagsFilterMixin
|
||||
@ -76,7 +76,7 @@ class ImageAttachmentFilterMixin(BaseFilterMixin):
|
||||
@dataclass
|
||||
class WeightFilterMixin(BaseFilterMixin):
|
||||
weight: FilterLookup[float] | None = strawberry_django.filter_field()
|
||||
weight_unit: Annotated['WeightUnitEnum', strawberry.lazy('netbox.graphql.enums')] | None = (
|
||||
weight_unit: BaseFilterLookup[Annotated['WeightUnitEnum', strawberry.lazy('netbox.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
@ -99,6 +99,6 @@ class SyncedDataFilterMixin(BaseFilterMixin):
|
||||
@dataclass
|
||||
class DistanceFilterMixin(BaseFilterMixin):
|
||||
distance: FilterLookup[float] | None = strawberry_django.filter_field()
|
||||
distance_unit: Annotated['DistanceUnitEnum', strawberry.lazy('netbox.graphql.enums')] | None = (
|
||||
distance_unit: BaseFilterLookup[Annotated['DistanceUnitEnum', strawberry.lazy('netbox.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
@ -5,7 +5,9 @@ from virtualization.choices import *
|
||||
__all__ = (
|
||||
'ClusterStatusEnum',
|
||||
'VirtualMachineStatusEnum',
|
||||
'VirtualMachineStatusEnum',
|
||||
)
|
||||
|
||||
ClusterStatusEnum = strawberry.enum(ClusterStatusChoices.as_enum(prefix='status'))
|
||||
VirtualMachineStartOnBootEnum = strawberry.enum(VirtualMachineStartOnBootChoices.as_enum(prefix='start_on_boot'))
|
||||
VirtualMachineStatusEnum = strawberry.enum(VirtualMachineStatusChoices.as_enum(prefix='status'))
|
||||
|
||||
@ -130,6 +130,11 @@ class VirtualMachineFilter(
|
||||
virtual_disks: Annotated['VirtualDiskFilter', strawberry.lazy('virtualization.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
start_on_boot: (
|
||||
BaseFilterLookup[Annotated['VirtualMachineStartOnBootEnum', strawberry.lazy('virtualization.graphql.enums')]
|
||||
] | None) = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.VMInterface, lookups=True)
|
||||
|
||||
@ -10,6 +10,7 @@ __all__ = (
|
||||
'IKEModeEnum',
|
||||
'IKEVersionEnum',
|
||||
'IPSecModeEnum',
|
||||
'L2VPNStatusEnum',
|
||||
'L2VPNTypeEnum',
|
||||
'TunnelEncapsulationEnum',
|
||||
'TunnelStatusEnum',
|
||||
@ -24,6 +25,7 @@ EncryptionAlgorithmEnum = strawberry.enum(EncryptionAlgorithmChoices.as_enum(pre
|
||||
IKEModeEnum = strawberry.enum(IKEModeChoices.as_enum())
|
||||
IKEVersionEnum = strawberry.enum(IKEVersionChoices.as_enum(prefix='version'))
|
||||
IPSecModeEnum = strawberry.enum(IPSecModeChoices.as_enum())
|
||||
L2VPNStatusEnum = strawberry.enum(L2VPNStatusChoices.as_enum(prefix='status'))
|
||||
L2VPNTypeEnum = strawberry.enum(L2VPNTypeChoices.as_enum(prefix='type'))
|
||||
TunnelEncapsulationEnum = strawberry.enum(TunnelEncapsulationChoices.as_enum(prefix='encap'))
|
||||
TunnelStatusEnum = strawberry.enum(TunnelStatusChoices.as_enum(prefix='status'))
|
||||
|
||||
@ -200,6 +200,9 @@ class L2VPNFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixi
|
||||
terminations: Annotated['L2VPNTerminationFilter', strawberry.lazy('vpn.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
status: BaseFilterLookup[Annotated['L2VPNStatusEnum', strawberry.lazy('vpn.graphql.enums')]] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.L2VPNTermination, lookups=True)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user