Merge branch 'netbox-community:main' into main

This commit is contained in:
Omripresent 2025-05-16 14:40:35 -04:00 committed by GitHub
commit be07f222f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 223 additions and 225 deletions

View File

@ -41,7 +41,7 @@ __all__ = (
)
@strawberry_django.filter(models.CircuitTermination, lookups=True)
@strawberry_django.filter_type(models.CircuitTermination, lookups=True)
class CircuitTerminationFilter(
BaseObjectTypeFilterMixin,
CustomFieldsFilterMixin,
@ -87,7 +87,7 @@ class CircuitTerminationFilter(
)
@strawberry_django.filter(models.Circuit, lookups=True)
@strawberry_django.filter_type(models.Circuit, lookups=True)
class CircuitFilter(
ContactFilterMixin,
ImageAttachmentFilterMixin,
@ -121,17 +121,17 @@ class CircuitFilter(
)
@strawberry_django.filter(models.CircuitType, lookups=True)
@strawberry_django.filter_type(models.CircuitType, lookups=True)
class CircuitTypeFilter(BaseCircuitTypeFilterMixin):
pass
@strawberry_django.filter(models.CircuitGroup, lookups=True)
@strawberry_django.filter_type(models.CircuitGroup, lookups=True)
class CircuitGroupFilter(TenancyFilterMixin, OrganizationalModelFilterMixin):
pass
@strawberry_django.filter(models.CircuitGroupAssignment, lookups=True)
@strawberry_django.filter_type(models.CircuitGroupAssignment, lookups=True)
class CircuitGroupAssignmentFilter(
BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin
):
@ -148,7 +148,7 @@ class CircuitGroupAssignmentFilter(
)
@strawberry_django.filter(models.Provider, lookups=True)
@strawberry_django.filter_type(models.Provider, lookups=True)
class ProviderFilter(ContactFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -158,7 +158,7 @@ class ProviderFilter(ContactFilterMixin, PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.ProviderAccount, lookups=True)
@strawberry_django.filter_type(models.ProviderAccount, lookups=True)
class ProviderAccountFilter(ContactFilterMixin, PrimaryModelFilterMixin):
provider: Annotated['ProviderFilter', strawberry.lazy('circuits.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -168,7 +168,7 @@ class ProviderAccountFilter(ContactFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ProviderNetwork, lookups=True)
@strawberry_django.filter_type(models.ProviderNetwork, lookups=True)
class ProviderNetworkFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
provider: Annotated['ProviderFilter', strawberry.lazy('circuits.graphql.filters')] | None = (
@ -178,12 +178,12 @@ class ProviderNetworkFilter(PrimaryModelFilterMixin):
service_id: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.VirtualCircuitType, lookups=True)
@strawberry_django.filter_type(models.VirtualCircuitType, lookups=True)
class VirtualCircuitTypeFilter(BaseCircuitTypeFilterMixin):
pass
@strawberry_django.filter(models.VirtualCircuit, lookups=True)
@strawberry_django.filter_type(models.VirtualCircuit, lookups=True)
class VirtualCircuitFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
cid: FilterLookup[str] | None = strawberry_django.filter_field()
provider_network: Annotated['ProviderNetworkFilter', strawberry.lazy('circuits.graphql.filters')] | None = (
@ -206,7 +206,7 @@ class VirtualCircuitFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.VirtualCircuitTermination, lookups=True)
@strawberry_django.filter_type(models.VirtualCircuitTermination, lookups=True)
class VirtualCircuitTerminationFilter(
BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin
):

View File

@ -54,9 +54,8 @@ class VirtualCircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable)
linkify=True,
verbose_name=_('Account')
)
type = tables.Column(
type = columns.ColoredLabelColumn(
verbose_name=_('Type'),
linkify=True
)
status = columns.ChoiceFieldColumn()
termination_count = columns.LinkedCountColumn(

View File

@ -23,7 +23,7 @@ __all__ = (
)
@strawberry_django.filter(models.DataFile, lookups=True)
@strawberry_django.filter_type(models.DataFile, lookups=True)
class DataFileFilter(BaseFilterMixin):
id: ID | None = strawberry_django.filter_field()
created: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
@ -39,7 +39,7 @@ class DataFileFilter(BaseFilterMixin):
hash: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.DataSource, lookups=True)
@strawberry_django.filter_type(models.DataSource, lookups=True)
class DataSourceFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
type: FilterLookup[str] | None = strawberry_django.filter_field()
@ -56,7 +56,7 @@ class DataSourceFilter(PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.ObjectChange, lookups=True)
@strawberry_django.filter_type(models.ObjectChange, lookups=True)
class ObjectChangeFilter(BaseFilterMixin):
id: ID | None = strawberry_django.filter_field()
time: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
@ -82,7 +82,7 @@ class ObjectChangeFilter(BaseFilterMixin):
)
@strawberry_django.filter(DjangoContentType, lookups=True)
@strawberry_django.filter_type(DjangoContentType, lookups=True)
class ContentTypeFilter(BaseFilterMixin):
id: ID | None = strawberry_django.filter_field()
app_label: FilterLookup[str] | None = strawberry_django.filter_field()

View File

@ -90,7 +90,7 @@ __all__ = (
)
@strawberry_django.filter(models.Cable, lookups=True)
@strawberry_django.filter_type(models.Cable, lookups=True)
class CableFilter(PrimaryModelFilterMixin, TenancyFilterMixin):
type: Annotated['CableTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
status: Annotated['LinkStatusEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
@ -107,7 +107,7 @@ class CableFilter(PrimaryModelFilterMixin, TenancyFilterMixin):
)
@strawberry_django.filter(models.CableTermination, lookups=True)
@strawberry_django.filter_type(models.CableTermination, lookups=True)
class CableTerminationFilter(ChangeLogFilterMixin):
cable: Annotated['CableFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
cable_id: ID | None = strawberry_django.filter_field()
@ -120,7 +120,7 @@ class CableTerminationFilter(ChangeLogFilterMixin):
termination_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ConsolePort, lookups=True)
@strawberry_django.filter_type(models.ConsolePort, lookups=True)
class ConsolePortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['ConsolePortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -130,14 +130,14 @@ class ConsolePortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilte
)
@strawberry_django.filter(models.ConsolePortTemplate, lookups=True)
@strawberry_django.filter_type(models.ConsolePortTemplate, lookups=True)
class ConsolePortTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['ConsolePortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.ConsoleServerPort, lookups=True)
@strawberry_django.filter_type(models.ConsoleServerPort, lookups=True)
class ConsoleServerPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['ConsolePortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -147,14 +147,14 @@ class ConsoleServerPortFilter(ModularComponentModelFilterMixin, CabledObjectMode
)
@strawberry_django.filter(models.ConsoleServerPortTemplate, lookups=True)
@strawberry_django.filter_type(models.ConsoleServerPortTemplate, lookups=True)
class ConsoleServerPortTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['ConsolePortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.Device, lookups=True)
@strawberry_django.filter_type(models.Device, lookups=True)
class DeviceFilter(
ContactFilterMixin,
TenancyFilterMixin,
@ -271,7 +271,7 @@ class DeviceFilter(
inventory_item_count: FilterLookup[int] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.DeviceBay, lookups=True)
@strawberry_django.filter_type(models.DeviceBay, lookups=True)
class DeviceBayFilter(ComponentModelFilterMixin):
installed_device: Annotated['DeviceFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -279,12 +279,12 @@ class DeviceBayFilter(ComponentModelFilterMixin):
installed_device_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.DeviceBayTemplate, lookups=True)
@strawberry_django.filter_type(models.DeviceBayTemplate, lookups=True)
class DeviceBayTemplateFilter(ComponentTemplateFilterMixin):
pass
@strawberry_django.filter(models.InventoryItemTemplate, lookups=True)
@strawberry_django.filter_type(models.InventoryItemTemplate, lookups=True)
class InventoryItemTemplateFilter(ComponentTemplateFilterMixin):
parent: Annotated['InventoryItemTemplateFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -304,13 +304,13 @@ class InventoryItemTemplateFilter(ComponentTemplateFilterMixin):
part_id: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.DeviceRole, lookups=True)
@strawberry_django.filter_type(models.DeviceRole, lookups=True)
class DeviceRoleFilter(OrganizationalModelFilterMixin, RenderConfigFilterMixin):
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
vm_role: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.DeviceType, lookups=True)
@strawberry_django.filter_type(models.DeviceType, lookups=True)
class DeviceTypeFilter(ImageAttachmentFilterMixin, PrimaryModelFilterMixin, WeightFilterMixin):
manufacturer: Annotated['ManufacturerFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -382,7 +382,7 @@ class DeviceTypeFilter(ImageAttachmentFilterMixin, PrimaryModelFilterMixin, Weig
inventory_item_template_count: FilterLookup[int] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.FrontPort, lookups=True)
@strawberry_django.filter_type(models.FrontPort, lookups=True)
class FrontPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['PortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@ -395,7 +395,7 @@ class FrontPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterM
)
@strawberry_django.filter(models.FrontPortTemplate, lookups=True)
@strawberry_django.filter_type(models.FrontPortTemplate, lookups=True)
class FrontPortTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['PortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@ -408,7 +408,7 @@ class FrontPortTemplateFilter(ModularComponentTemplateFilterMixin):
)
@strawberry_django.filter(models.MACAddress, lookups=True)
@strawberry_django.filter_type(models.MACAddress, lookups=True)
class MACAddressFilter(PrimaryModelFilterMixin):
mac_address: FilterLookup[str] | None = strawberry_django.filter_field()
assigned_object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
@ -417,7 +417,7 @@ class MACAddressFilter(PrimaryModelFilterMixin):
assigned_object_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Interface, lookups=True)
@strawberry_django.filter_type(models.Interface, lookups=True)
class InterfaceFilter(ModularComponentModelFilterMixin, InterfaceBaseFilterMixin, CabledObjectModelFilterMixin):
vcdcs: Annotated['VirtualDeviceContextFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -486,7 +486,7 @@ class InterfaceFilter(ModularComponentModelFilterMixin, InterfaceBaseFilterMixin
)
@strawberry_django.filter(models.InterfaceTemplate, lookups=True)
@strawberry_django.filter_type(models.InterfaceTemplate, lookups=True)
class InterfaceTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['InterfaceTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -508,7 +508,7 @@ class InterfaceTemplateFilter(ModularComponentTemplateFilterMixin):
)
@strawberry_django.filter(models.InventoryItem, lookups=True)
@strawberry_django.filter_type(models.InventoryItem, lookups=True)
class InventoryItemFilter(ComponentModelFilterMixin):
parent: Annotated['InventoryItemFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -535,12 +535,12 @@ class InventoryItemFilter(ComponentModelFilterMixin):
discovered: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.InventoryItemRole, lookups=True)
@strawberry_django.filter_type(models.InventoryItemRole, lookups=True)
class InventoryItemRoleFilter(OrganizationalModelFilterMixin):
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Location, lookups=True)
@strawberry_django.filter_type(models.Location, lookups=True)
class LocationFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilterMixin, NestedGroupModelFilterMixin):
site: Annotated['SiteFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
site_id: ID | None = strawberry_django.filter_field()
@ -556,12 +556,12 @@ class LocationFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilt
)
@strawberry_django.filter(models.Manufacturer, lookups=True)
@strawberry_django.filter_type(models.Manufacturer, lookups=True)
class ManufacturerFilter(ContactFilterMixin, OrganizationalModelFilterMixin):
pass
@strawberry_django.filter(models.Module, lookups=True)
@strawberry_django.filter_type(models.Module, lookups=True)
class ModuleFilter(PrimaryModelFilterMixin, ConfigContextFilterMixin):
device: Annotated['DeviceFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
device_id: ID | None = strawberry_django.filter_field()
@ -610,7 +610,7 @@ class ModuleFilter(PrimaryModelFilterMixin, ConfigContextFilterMixin):
)
@strawberry_django.filter(models.ModuleBay, lookups=True)
@strawberry_django.filter_type(models.ModuleBay, lookups=True)
class ModuleBayFilter(ModularComponentModelFilterMixin):
parent: Annotated['ModuleBayFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -619,17 +619,17 @@ class ModuleBayFilter(ModularComponentModelFilterMixin):
position: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ModuleBayTemplate, lookups=True)
@strawberry_django.filter_type(models.ModuleBayTemplate, lookups=True)
class ModuleBayTemplateFilter(ModularComponentTemplateFilterMixin):
position: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ModuleTypeProfile, lookups=True)
@strawberry_django.filter_type(models.ModuleTypeProfile, lookups=True)
class ModuleTypeProfileFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ModuleType, lookups=True)
@strawberry_django.filter_type(models.ModuleType, lookups=True)
class ModuleTypeFilter(ImageAttachmentFilterMixin, PrimaryModelFilterMixin, WeightFilterMixin):
manufacturer: Annotated['ManufacturerFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -676,7 +676,7 @@ class ModuleTypeFilter(ImageAttachmentFilterMixin, PrimaryModelFilterMixin, Weig
) = strawberry_django.filter_field()
@strawberry_django.filter(models.Platform, lookups=True)
@strawberry_django.filter_type(models.Platform, lookups=True)
class PlatformFilter(OrganizationalModelFilterMixin):
manufacturer: Annotated['ManufacturerFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -688,7 +688,7 @@ class PlatformFilter(OrganizationalModelFilterMixin):
config_template_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.PowerFeed, lookups=True)
@strawberry_django.filter_type(models.PowerFeed, lookups=True)
class PowerFeedFilter(CabledObjectModelFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
power_panel: Annotated['PowerPanelFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -723,7 +723,7 @@ class PowerFeedFilter(CabledObjectModelFilterMixin, TenancyFilterMixin, PrimaryM
)
@strawberry_django.filter(models.PowerOutlet, lookups=True)
@strawberry_django.filter_type(models.PowerOutlet, lookups=True)
class PowerOutletFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['PowerOutletTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -738,7 +738,7 @@ class PowerOutletFilter(ModularComponentModelFilterMixin, CabledObjectModelFilte
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.PowerOutletTemplate, lookups=True)
@strawberry_django.filter_type(models.PowerOutletTemplate, lookups=True)
class PowerOutletTemplateFilter(ModularComponentModelFilterMixin):
type: Annotated['PowerOutletTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -752,7 +752,7 @@ class PowerOutletTemplateFilter(ModularComponentModelFilterMixin):
)
@strawberry_django.filter(models.PowerPanel, lookups=True)
@strawberry_django.filter_type(models.PowerPanel, lookups=True)
class PowerPanelFilter(ContactFilterMixin, ImageAttachmentFilterMixin, PrimaryModelFilterMixin):
site: Annotated['SiteFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
site_id: ID | None = strawberry_django.filter_field()
@ -765,7 +765,7 @@ class PowerPanelFilter(ContactFilterMixin, ImageAttachmentFilterMixin, PrimaryMo
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.PowerPort, lookups=True)
@strawberry_django.filter_type(models.PowerPort, lookups=True)
class PowerPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['PowerPortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -778,7 +778,7 @@ class PowerPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterM
)
@strawberry_django.filter(models.PowerPortTemplate, lookups=True)
@strawberry_django.filter_type(models.PowerPortTemplate, lookups=True)
class PowerPortTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['PowerPortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -791,7 +791,7 @@ class PowerPortTemplateFilter(ModularComponentTemplateFilterMixin):
)
@strawberry_django.filter(models.RackType, lookups=True)
@strawberry_django.filter_type(models.RackType, lookups=True)
class RackTypeFilter(RackBaseFilterMixin):
form_factor: Annotated['RackFormFactorEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -804,7 +804,7 @@ class RackTypeFilter(RackBaseFilterMixin):
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Rack, lookups=True)
@strawberry_django.filter_type(models.Rack, lookups=True)
class RackFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilterMixin, RackBaseFilterMixin):
form_factor: Annotated['RackFormFactorEnum', strawberry.lazy('dcim.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -836,7 +836,7 @@ class RackFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilterMi
)
@strawberry_django.filter(models.RackReservation, lookups=True)
@strawberry_django.filter_type(models.RackReservation, lookups=True)
class RackReservationFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
rack: Annotated['RackFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
rack_id: ID | None = strawberry_django.filter_field()
@ -848,12 +848,12 @@ class RackReservationFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
description: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.RackRole, lookups=True)
@strawberry_django.filter_type(models.RackRole, lookups=True)
class RackRoleFilter(OrganizationalModelFilterMixin):
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.RearPort, lookups=True)
@strawberry_django.filter_type(models.RearPort, lookups=True)
class RearPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMixin):
type: Annotated['PortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@ -862,7 +862,7 @@ class RearPortFilter(ModularComponentModelFilterMixin, CabledObjectModelFilterMi
)
@strawberry_django.filter(models.RearPortTemplate, lookups=True)
@strawberry_django.filter_type(models.RearPortTemplate, lookups=True)
class RearPortTemplateFilter(ModularComponentTemplateFilterMixin):
type: Annotated['PortTypeEnum', strawberry.lazy('dcim.graphql.enums')] | None = strawberry_django.filter_field()
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
@ -871,7 +871,7 @@ class RearPortTemplateFilter(ModularComponentTemplateFilterMixin):
)
@strawberry_django.filter(models.Region, lookups=True)
@strawberry_django.filter_type(models.Region, lookups=True)
class RegionFilter(ContactFilterMixin, NestedGroupModelFilterMixin):
prefixes: Annotated['PrefixFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -881,7 +881,7 @@ class RegionFilter(ContactFilterMixin, NestedGroupModelFilterMixin):
)
@strawberry_django.filter(models.Site, lookups=True)
@strawberry_django.filter_type(models.Site, lookups=True)
class SiteFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -915,7 +915,7 @@ class SiteFilter(ContactFilterMixin, ImageAttachmentFilterMixin, TenancyFilterMi
)
@strawberry_django.filter(models.SiteGroup, lookups=True)
@strawberry_django.filter_type(models.SiteGroup, lookups=True)
class SiteGroupFilter(ContactFilterMixin, NestedGroupModelFilterMixin):
prefixes: Annotated['PrefixFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -925,7 +925,7 @@ class SiteGroupFilter(ContactFilterMixin, NestedGroupModelFilterMixin):
)
@strawberry_django.filter(models.VirtualChassis, lookups=True)
@strawberry_django.filter_type(models.VirtualChassis, lookups=True)
class VirtualChassisFilter(PrimaryModelFilterMixin):
master: Annotated['DeviceFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
master_id: ID | None = strawberry_django.filter_field()
@ -937,7 +937,7 @@ class VirtualChassisFilter(PrimaryModelFilterMixin):
member_count: FilterLookup[int] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.VirtualDeviceContext, lookups=True)
@strawberry_django.filter_type(models.VirtualDeviceContext, lookups=True)
class VirtualDeviceContextFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
device: Annotated['DeviceFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
device_id: ID | None = strawberry_django.filter_field()

View File

@ -40,7 +40,7 @@ __all__ = (
)
@strawberry_django.filter(models.ConfigContext, lookups=True)
@strawberry_django.filter_type(models.ConfigContext, lookups=True)
class ConfigContextFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] = strawberry_django.filter_field()
weight: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
@ -97,7 +97,7 @@ class ConfigContextFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, Chan
)
@strawberry_django.filter(models.ConfigTemplate, lookups=True)
@strawberry_django.filter_type(models.ConfigTemplate, lookups=True)
class ConfigTemplateFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -111,7 +111,7 @@ class ConfigTemplateFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, Cha
as_attachment: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.CustomField, lookups=True)
@strawberry_django.filter_type(models.CustomField, lookups=True)
class CustomFieldFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
type: Annotated['CustomFieldTypeEnum', strawberry.lazy('extras.graphql.enums')] | None = (
strawberry_django.filter_field()
@ -164,7 +164,7 @@ class CustomFieldFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
comments: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.CustomFieldChoiceSet, lookups=True)
@strawberry_django.filter_type(models.CustomFieldChoiceSet, lookups=True)
class CustomFieldChoiceSetFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -177,7 +177,7 @@ class CustomFieldChoiceSetFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin
order_alphabetically: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.CustomLink, lookups=True)
@strawberry_django.filter_type(models.CustomLink, lookups=True)
class CustomLinkFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
enabled: FilterLookup[bool] | None = strawberry_django.filter_field()
@ -193,7 +193,7 @@ class CustomLinkFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
new_window: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ExportTemplate, lookups=True)
@strawberry_django.filter_type(models.ExportTemplate, lookups=True)
class ExportTemplateFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -207,7 +207,7 @@ class ExportTemplateFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, Cha
as_attachment: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ImageAttachment, lookups=True)
@strawberry_django.filter_type(models.ImageAttachment, lookups=True)
class ImageAttachmentFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -222,7 +222,7 @@ class ImageAttachmentFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.JournalEntry, lookups=True)
@strawberry_django.filter_type(models.JournalEntry, lookups=True)
class JournalEntryFilter(BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin):
assigned_object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -238,7 +238,7 @@ class JournalEntryFilter(BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, Tag
comments: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.NotificationGroup, lookups=True)
@strawberry_django.filter_type(models.NotificationGroup, lookups=True)
class NotificationGroupFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -246,7 +246,7 @@ class NotificationGroupFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
users: Annotated['UserFilter', strawberry.lazy('users.graphql.filters')] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.SavedFilter, lookups=True)
@strawberry_django.filter_type(models.SavedFilter, lookups=True)
class SavedFilterFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -263,7 +263,7 @@ class SavedFilterFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
)
@strawberry_django.filter(models.TableConfig, lookups=True)
@strawberry_django.filter_type(models.TableConfig, lookups=True)
class TableConfigFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -276,13 +276,13 @@ class TableConfigFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
shared: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Tag, lookups=True)
@strawberry_django.filter_type(models.Tag, lookups=True)
class TagFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin, TagBaseFilterMixin):
color: Annotated['ColorEnum', strawberry.lazy('netbox.graphql.enums')] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Webhook, lookups=True)
@strawberry_django.filter_type(models.Webhook, lookups=True)
class WebhookFilter(BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@ -301,7 +301,7 @@ class WebhookFilter(BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilt
)
@strawberry_django.filter(models.EventRule, lookups=True)
@strawberry_django.filter_type(models.EventRule, lookups=True)
class EventRuleFilter(BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()

View File

@ -46,7 +46,7 @@ __all__ = (
)
@strawberry_django.filter(models.ASN, lookups=True)
@strawberry_django.filter_type(models.ASN, lookups=True)
class ASNFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
rir: Annotated['RIRFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
rir_id: ID | None = strawberry_django.filter_field()
@ -61,7 +61,7 @@ class ASNFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
) = strawberry_django.filter_field()
@strawberry_django.filter(models.ASNRange, lookups=True)
@strawberry_django.filter_type(models.ASNRange, lookups=True)
class ASNRangeFilter(TenancyFilterMixin, OrganizationalModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -75,7 +75,7 @@ class ASNRangeFilter(TenancyFilterMixin, OrganizationalModelFilterMixin):
)
@strawberry_django.filter(models.Aggregate, lookups=True)
@strawberry_django.filter_type(models.Aggregate, lookups=True)
class AggregateFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
prefix: Annotated['PrefixFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
prefix_id: ID | None = strawberry_django.filter_field()
@ -84,7 +84,7 @@ class AggregateFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilter
date_added: DateFilterLookup[date] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.FHRPGroup, lookups=True)
@strawberry_django.filter_type(models.FHRPGroup, lookups=True)
class FHRPGroupFilter(PrimaryModelFilterMixin):
group_id: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
strawberry_django.filter_field()
@ -102,7 +102,7 @@ class FHRPGroupFilter(PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.FHRPGroupAssignment, lookups=True)
@strawberry_django.filter_type(models.FHRPGroupAssignment, lookups=True)
class FHRPGroupAssignmentFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
interface_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -117,7 +117,7 @@ class FHRPGroupAssignmentFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin)
)
@strawberry_django.filter(models.IPAddress, lookups=True)
@strawberry_django.filter_type(models.IPAddress, lookups=True)
class IPAddressFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
address: FilterLookup[str] | None = strawberry_django.filter_field()
vrf: Annotated['VRFFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
@ -156,7 +156,7 @@ class IPAddressFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilter
return q
@strawberry_django.filter(models.IPRange, lookups=True)
@strawberry_django.filter_type(models.IPRange, lookups=True)
class IPRangeFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
start_address: FilterLookup[str] | None = strawberry_django.filter_field()
end_address: FilterLookup[str] | None = strawberry_django.filter_field()
@ -185,7 +185,7 @@ class IPRangeFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMi
return q
@strawberry_django.filter(models.Prefix, lookups=True)
@strawberry_django.filter_type(models.Prefix, lookups=True)
class PrefixFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
prefix: FilterLookup[str] | None = strawberry_django.filter_field()
vrf: Annotated['VRFFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
@ -201,19 +201,19 @@ class PrefixFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, Pr
mark_utilized: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.RIR, lookups=True)
@strawberry_django.filter_type(models.RIR, lookups=True)
class RIRFilter(OrganizationalModelFilterMixin):
is_private: FilterLookup[bool] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Role, lookups=True)
@strawberry_django.filter_type(models.Role, lookups=True)
class RoleFilter(OrganizationalModelFilterMixin):
weight: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.RouteTarget, lookups=True)
@strawberry_django.filter_type(models.RouteTarget, lookups=True)
class RouteTargetFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
importing_vrfs: Annotated['VRFFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
@ -230,7 +230,7 @@ class RouteTargetFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.Service, lookups=True)
@strawberry_django.filter_type(models.Service, lookups=True)
class ServiceFilter(ContactFilterMixin, ServiceBaseFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
ip_addresses: Annotated['IPAddressFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
@ -242,12 +242,12 @@ class ServiceFilter(ContactFilterMixin, ServiceBaseFilterMixin, PrimaryModelFilt
parent_object_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.ServiceTemplate, lookups=True)
@strawberry_django.filter_type(models.ServiceTemplate, lookups=True)
class ServiceTemplateFilter(ServiceBaseFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.VLAN, lookups=True)
@strawberry_django.filter_type(models.VLAN, lookups=True)
class VLANFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
site: Annotated['SiteFilter', strawberry.lazy('dcim.graphql.filters')] | None = strawberry_django.filter_field()
site_id: ID | None = strawberry_django.filter_field()
@ -277,19 +277,19 @@ class VLANFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.VLANGroup, lookups=True)
@strawberry_django.filter_type(models.VLANGroup, lookups=True)
class VLANGroupFilter(ScopedFilterMixin, OrganizationalModelFilterMixin):
vid_ranges: Annotated['IntegerArrayLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.VLANTranslationPolicy, lookups=True)
@strawberry_django.filter_type(models.VLANTranslationPolicy, lookups=True)
class VLANTranslationPolicyFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.VLANTranslationRule, lookups=True)
@strawberry_django.filter_type(models.VLANTranslationRule, lookups=True)
class VLANTranslationRuleFilter(NetBoxModelFilterMixin):
policy: Annotated['VLANTranslationPolicyFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -304,7 +304,7 @@ class VLANTranslationRuleFilter(NetBoxModelFilterMixin):
)
@strawberry_django.filter(models.VRF, lookups=True)
@strawberry_django.filter_type(models.VRF, lookups=True)
class VRFFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
rd: FilterLookup[str] | None = strawberry_django.filter_field()

View File

@ -53,7 +53,6 @@
<div class="col col-12 col-md-6">
<div class="card">
<h2 class="card-header">{% trans "Connection" %}</h2>
<div class="card-body">
{% if object.mark_connected %}
<div class="card-body">
<span class="text-success"><i class="mdi mdi-check-bold"></i></span>

View File

@ -26,6 +26,12 @@
<th scope="row">{% trans "Location" %}</th>
<td>{% nested_tree object.location %}</td>
</tr>
{% if object.virtual_chassis %}
<tr>
<th scope="row">{% trans "Virtual Chassis" %}</th>
<td>{{ object.virtual_chassis|linkify }}</td>
</tr>
{% endif %}
<tr>
<th scope="row">{% trans "Rack" %}</th>
<td class="d-flex justify-content-between align-items-start">

View File

@ -56,7 +56,7 @@ __all__ = (
)
@strawberry_django.filter(models.Tenant, lookups=True)
@strawberry_django.filter_type(models.Tenant, lookups=True)
class TenantFilter(PrimaryModelFilterMixin, ContactFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -135,7 +135,7 @@ class TenantFilter(PrimaryModelFilterMixin, ContactFilterMixin):
)
@strawberry_django.filter(models.TenantGroup, lookups=True)
@strawberry_django.filter_type(models.TenantGroup, lookups=True)
class TenantGroupFilter(OrganizationalModelFilterMixin):
parent: Annotated['TenantGroupFilter', strawberry.lazy('tenancy.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -149,7 +149,7 @@ class TenantGroupFilter(OrganizationalModelFilterMixin):
)
@strawberry_django.filter(models.Contact, lookups=True)
@strawberry_django.filter_type(models.Contact, lookups=True)
class ContactFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
title: FilterLookup[str] | None = strawberry_django.filter_field()
@ -165,19 +165,19 @@ class ContactFilter(PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.ContactRole, lookups=True)
@strawberry_django.filter_type(models.ContactRole, lookups=True)
class ContactRoleFilter(OrganizationalModelFilterMixin):
pass
@strawberry_django.filter(models.ContactGroup, lookups=True)
@strawberry_django.filter_type(models.ContactGroup, lookups=True)
class ContactGroupFilter(NestedGroupModelFilterMixin):
parent: Annotated['ContactGroupFilter', strawberry.lazy('tenancy.graphql.filters')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.ContactAssignment, lookups=True)
@strawberry_django.filter_type(models.ContactAssignment, lookups=True)
class ContactAssignmentFilter(CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin):
object_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-13 05:01+0000\n"
"POT-Creation-Date: 2025-05-16 05:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -436,7 +436,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:379
#: netbox/circuits/forms/model_forms.py:343
#: netbox/circuits/forms/model_forms.py:358
#: netbox/circuits/tables/virtual_circuits.py:88
#: netbox/circuits/tables/virtual_circuits.py:87
#: netbox/templates/circuits/virtualcircuit.html:20
#: netbox/templates/circuits/virtualcircuittermination.html:38
msgid "Virtual circuit"
@ -482,7 +482,7 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:1194 netbox/dcim/forms/bulk_edit.py:1239
#: netbox/dcim/forms/bulk_edit.py:1266 netbox/dcim/forms/bulk_edit.py:1284
#: netbox/dcim/forms/bulk_edit.py:1302 netbox/dcim/forms/bulk_edit.py:1320
#: netbox/dcim/forms/bulk_edit.py:1793 netbox/dcim/forms/bulk_edit.py:1834
#: netbox/dcim/forms/bulk_edit.py:1800 netbox/dcim/forms/bulk_edit.py:1841
#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/bulk_edit.py:150
#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:211
#: netbox/extras/forms/bulk_edit.py:241 netbox/extras/forms/bulk_edit.py:289
@ -511,7 +511,8 @@ msgstr ""
#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:36
#: netbox/templates/dcim/consoleport.html:44
#: netbox/templates/dcim/consoleserverport.html:44
#: netbox/templates/dcim/device.html:94 netbox/templates/dcim/devicebay.html:32
#: netbox/templates/dcim/device.html:100
#: netbox/templates/dcim/devicebay.html:32
#: netbox/templates/dcim/devicerole.html:30
#: netbox/templates/dcim/devicetype.html:33
#: netbox/templates/dcim/frontport.html:58
@ -627,7 +628,7 @@ msgstr ""
#: netbox/circuits/tables/providers.py:70
#: netbox/circuits/tables/providers.py:101
#: netbox/circuits/tables/virtual_circuits.py:46
#: netbox/circuits/tables/virtual_circuits.py:93
#: netbox/circuits/tables/virtual_circuits.py:92
#: netbox/templates/circuits/circuit.html:18
#: netbox/templates/circuits/circuitgroupassignment.html:26
#: netbox/templates/circuits/circuittermination.html:25
@ -653,7 +654,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:321 netbox/dcim/forms/bulk_edit.py:216
#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:866
#: netbox/dcim/forms/bulk_edit.py:1235 netbox/dcim/forms/bulk_edit.py:1262
#: netbox/dcim/forms/bulk_edit.py:1789 netbox/dcim/forms/filtersets.py:1132
#: netbox/dcim/forms/bulk_edit.py:1796 netbox/dcim/forms/filtersets.py:1132
#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1543
#: netbox/dcim/forms/filtersets.py:1567 netbox/dcim/tables/devices.py:744
#: netbox/dcim/tables/devices.py:800 netbox/dcim/tables/devices.py:1041
@ -758,7 +759,7 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/bulk_edit.py:753
#: netbox/dcim/forms/bulk_edit.py:818 netbox/dcim/forms/bulk_edit.py:850
#: netbox/dcim/forms/bulk_edit.py:977 netbox/dcim/forms/bulk_edit.py:1770
#: netbox/dcim/forms/bulk_edit.py:1812 netbox/dcim/forms/bulk_import.py:91
#: netbox/dcim/forms/bulk_edit.py:1819 netbox/dcim/forms/bulk_import.py:91
#: netbox/dcim/forms/bulk_import.py:150 netbox/dcim/forms/bulk_import.py:254
#: netbox/dcim/forms/bulk_import.py:563 netbox/dcim/forms/bulk_import.py:717
#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/bulk_import.py:1375
@ -770,7 +771,7 @@ msgstr ""
#: netbox/dcim/forms/filtersets.py:1394 netbox/dcim/forms/filtersets.py:1645
#: netbox/dcim/tables/devices.py:150 netbox/dcim/tables/devices.py:524
#: netbox/dcim/tables/devices.py:855 netbox/dcim/tables/devices.py:989
#: netbox/dcim/tables/devices.py:1101 netbox/dcim/tables/modules.py:104
#: netbox/dcim/tables/devices.py:1100 netbox/dcim/tables/modules.py:104
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:129
#: netbox/dcim/tables/sites.py:88 netbox/dcim/tables/sites.py:143
#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:290
@ -787,7 +788,7 @@ msgstr ""
#: netbox/templates/circuits/virtualcircuit.html:43
#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48
#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18
#: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178
#: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:184
#: netbox/templates/dcim/inventoryitem.html:36
#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69
#: netbox/templates/dcim/powerfeed.html:36
@ -836,7 +837,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:332 netbox/dcim/forms/bulk_edit.py:131
#: netbox/dcim/forms/bulk_edit.py:196 netbox/dcim/forms/bulk_edit.py:361
#: netbox/dcim/forms/bulk_edit.py:484 netbox/dcim/forms/bulk_edit.py:743
#: netbox/dcim/forms/bulk_edit.py:856 netbox/dcim/forms/bulk_edit.py:1817
#: netbox/dcim/forms/bulk_edit.py:856 netbox/dcim/forms/bulk_edit.py:1824
#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155
#: netbox/dcim/forms/bulk_import.py:247 netbox/dcim/forms/bulk_import.py:362
#: netbox/dcim/forms/bulk_import.py:537 netbox/dcim/forms/bulk_import.py:1387
@ -866,7 +867,7 @@ msgstr ""
#: netbox/ipam/tables/vlans.py:207 netbox/templates/circuits/circuit.html:48
#: netbox/templates/circuits/circuitgroup.html:36
#: netbox/templates/circuits/virtualcircuit.html:47
#: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79
#: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:85
#: netbox/templates/dcim/location.html:49
#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32
#: netbox/templates/dcim/rackreservation.html:49
@ -1059,7 +1060,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:305
#: netbox/circuits/tables/circuits.py:206 netbox/dcim/forms/model_forms.py:656
#: netbox/templates/circuits/circuitgroupassignment.html:34
#: netbox/templates/dcim/device.html:133
#: netbox/templates/dcim/device.html:139
#: netbox/templates/dcim/virtualchassis.html:68
#: netbox/templates/dcim/virtualchassis_edit.html:60
#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26
@ -1075,7 +1076,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:392
#: netbox/circuits/forms/model_forms.py:325
#: netbox/circuits/tables/virtual_circuits.py:51
#: netbox/circuits/tables/virtual_circuits.py:99
#: netbox/circuits/tables/virtual_circuits.py:98
msgid "Provider network"
msgstr ""
@ -1103,7 +1104,7 @@ msgstr ""
#: netbox/ipam/tables/ip.py:269 netbox/ipam/tables/ip.py:325
#: netbox/ipam/tables/vlans.py:101 netbox/ipam/tables/vlans.py:213
#: netbox/templates/circuits/virtualcircuittermination.html:42
#: netbox/templates/dcim/device.html:182
#: netbox/templates/dcim/device.html:188
#: netbox/templates/dcim/inc/panels/inventory_items.html:20
#: netbox/templates/dcim/interface.html:178
#: netbox/templates/dcim/interface.html:280
@ -1207,11 +1208,11 @@ msgstr ""
#: netbox/circuits/forms/bulk_import.py:259
#: netbox/circuits/forms/model_forms.py:368
#: netbox/circuits/tables/virtual_circuits.py:112
#: netbox/circuits/tables/virtual_circuits.py:111
#: netbox/dcim/forms/bulk_import.py:1268 netbox/dcim/forms/model_forms.py:1289
#: netbox/dcim/forms/model_forms.py:1558 netbox/dcim/forms/model_forms.py:1725
#: netbox/dcim/forms/model_forms.py:1760 netbox/dcim/forms/model_forms.py:1890
#: netbox/dcim/tables/connections.py:65 netbox/dcim/tables/devices.py:1147
#: netbox/dcim/tables/connections.py:65 netbox/dcim/tables/devices.py:1146
#: netbox/ipam/forms/bulk_import.py:324 netbox/ipam/forms/model_forms.py:290
#: netbox/ipam/forms/model_forms.py:299 netbox/ipam/tables/fhrp.py:64
#: netbox/ipam/tables/ip.py:330 netbox/ipam/tables/vlans.py:147
@ -1350,7 +1351,7 @@ msgstr ""
#: netbox/circuits/forms/filtersets.py:82 netbox/circuits/tables/circuits.py:62
#: netbox/circuits/tables/providers.py:64
#: netbox/circuits/tables/virtual_circuits.py:55
#: netbox/circuits/tables/virtual_circuits.py:103
#: netbox/circuits/tables/virtual_circuits.py:102
#: netbox/templates/circuits/circuit.html:22
#: netbox/templates/circuits/provideraccount.html:24
msgid "Account"
@ -1508,7 +1509,7 @@ msgid "member ID"
msgstr ""
#: netbox/circuits/models/circuits.py:201 netbox/ipam/models/fhrp.py:96
#: netbox/tenancy/models/contacts.py:133
#: netbox/tenancy/models/contacts.py:119
msgid "priority"
msgstr ""
@ -1606,7 +1607,7 @@ msgstr ""
#: netbox/ipam/models/vlans.py:206 netbox/ipam/models/vlans.py:352
#: netbox/ipam/models/vrfs.py:20 netbox/ipam/models/vrfs.py:75
#: netbox/netbox/models/__init__.py:142 netbox/netbox/models/__init__.py:190
#: netbox/tenancy/models/contacts.py:59 netbox/tenancy/models/tenants.py:19
#: netbox/tenancy/models/contacts.py:57 netbox/tenancy/models/tenants.py:19
#: netbox/tenancy/models/tenants.py:42 netbox/users/models/permissions.py:19
#: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:52
#: netbox/virtualization/models/virtualmachines.py:71
@ -1856,7 +1857,7 @@ msgstr ""
#: netbox/circuits/tables/circuits.py:83 netbox/circuits/tables/providers.py:46
#: netbox/circuits/tables/providers.py:80
#: netbox/circuits/tables/providers.py:105
#: netbox/circuits/tables/virtual_circuits.py:68
#: netbox/circuits/tables/virtual_circuits.py:67
#: netbox/dcim/tables/devices.py:1074 netbox/dcim/tables/devicetypes.py:97
#: netbox/dcim/tables/modules.py:27 netbox/dcim/tables/modules.py:68
#: netbox/dcim/tables/modules.py:107 netbox/dcim/tables/power.py:39
@ -1929,7 +1930,7 @@ msgstr ""
msgid "ASN Count"
msgstr ""
#: netbox/circuits/tables/virtual_circuits.py:65
#: netbox/circuits/tables/virtual_circuits.py:64
#: netbox/netbox/navigation/menu.py:235
#: netbox/templates/circuits/virtualcircuit.html:87
#: netbox/templates/vpn/l2vpn.html:60 netbox/templates/vpn/tunnel.html:72
@ -1937,9 +1938,9 @@ msgstr ""
msgid "Terminations"
msgstr ""
#: netbox/circuits/tables/virtual_circuits.py:109
#: netbox/circuits/tables/virtual_circuits.py:108
#: netbox/dcim/forms/bulk_edit.py:789 netbox/dcim/forms/bulk_edit.py:1343
#: netbox/dcim/forms/bulk_edit.py:1755 netbox/dcim/forms/bulk_edit.py:1807
#: netbox/dcim/forms/bulk_edit.py:1755 netbox/dcim/forms/bulk_edit.py:1814
#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:761
#: netbox/dcim/forms/bulk_import.py:787 netbox/dcim/forms/bulk_import.py:813
#: netbox/dcim/forms/bulk_import.py:833 netbox/dcim/forms/bulk_import.py:889
@ -1972,7 +1973,7 @@ msgstr ""
#: netbox/templates/circuits/virtualcircuittermination.html:56
#: netbox/templates/dcim/consoleport.html:20
#: netbox/templates/dcim/consoleserverport.html:20
#: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130
#: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:136
#: netbox/templates/dcim/device_edit.html:12
#: netbox/templates/dcim/devicebay.html:20
#: netbox/templates/dcim/devicebay.html:48
@ -3047,7 +3048,7 @@ msgstr ""
msgid "Reserved"
msgstr ""
#: netbox/dcim/choices.py:101 netbox/templates/dcim/device.html:259
#: netbox/dcim/choices.py:101 netbox/templates/dcim/device.html:265
msgid "Available"
msgstr ""
@ -3088,7 +3089,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:517 netbox/dcim/forms/model_forms.py:1207
#: netbox/dcim/forms/model_forms.py:1676 netbox/dcim/forms/object_import.py:177
#: netbox/dcim/tables/devices.py:696 netbox/dcim/tables/devices.py:906
#: netbox/dcim/tables/devices.py:993 netbox/dcim/tables/devices.py:1153
#: netbox/dcim/tables/devices.py:993 netbox/dcim/tables/devices.py:1152
#: netbox/extras/tables/tables.py:237 netbox/ipam/forms/bulk_import.py:568
#: netbox/ipam/forms/model_forms.py:768 netbox/ipam/tables/fhrp.py:59
#: netbox/ipam/tables/ip.py:336 netbox/ipam/tables/services.py:44
@ -3120,14 +3121,14 @@ msgstr ""
msgid "Child"
msgstr ""
#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:349
#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:355
#: netbox/templates/dcim/rack.html:133
#: netbox/templates/dcim/rack_elevation_list.html:20
#: netbox/templates/dcim/rackreservation.html:76
msgid "Front"
msgstr ""
#: netbox/dcim/choices.py:168 netbox/templates/dcim/device.html:355
#: netbox/dcim/choices.py:168 netbox/templates/dcim/device.html:361
#: netbox/templates/dcim/rack.html:139
#: netbox/templates/dcim/rack_elevation_list.html:21
#: netbox/templates/dcim/rackreservation.html:82
@ -3729,7 +3730,7 @@ msgstr ""
#: netbox/dcim/filtersets.py:1591 netbox/dcim/forms/filtersets.py:111
#: netbox/dcim/tables/devices.py:216 netbox/netbox/navigation/menu.py:79
#: netbox/templates/dcim/device.html:120
#: netbox/templates/dcim/device.html:31 netbox/templates/dcim/device.html:126
#: netbox/templates/dcim/device_edit.html:95
#: netbox/templates/dcim/virtualchassis.html:20
#: netbox/templates/dcim/virtualchassis_add.html:12
@ -3884,7 +3885,7 @@ msgid "LAG interface (ID)"
msgstr ""
#: netbox/dcim/filtersets.py:1923 netbox/dcim/tables/devices.py:612
#: netbox/dcim/tables/devices.py:1142 netbox/templates/dcim/interface.html:131
#: netbox/dcim/tables/devices.py:1141 netbox/templates/dcim/interface.html:131
#: netbox/templates/dcim/macaddress.html:11
#: netbox/templates/dcim/macaddress.html:14
#: netbox/templates/virtualization/vminterface.html:79
@ -3981,7 +3982,7 @@ msgstr ""
#: netbox/dcim/forms/object_create.py:208
#: netbox/dcim/forms/object_create.py:357 netbox/dcim/tables/devices.py:175
#: netbox/dcim/tables/devices.py:747 netbox/dcim/tables/devicetypes.py:253
#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131
#: netbox/templates/dcim/device.html:49 netbox/templates/dcim/device.html:137
#: netbox/templates/dcim/modulebay.html:38
#: netbox/templates/dcim/virtualchassis.html:66
#: netbox/templates/dcim/virtualchassis_edit.html:59
@ -4104,7 +4105,7 @@ msgstr ""
#: netbox/extras/forms/bulk_import.py:238 netbox/extras/forms/filtersets.py:66
#: netbox/extras/forms/filtersets.py:160 netbox/extras/forms/filtersets.py:254
#: netbox/extras/forms/filtersets.py:284 netbox/extras/forms/model_forms.py:572
#: netbox/ipam/forms/bulk_edit.py:193 netbox/templates/dcim/device.html:324
#: netbox/ipam/forms/bulk_edit.py:193 netbox/templates/dcim/device.html:330
#: netbox/templates/dcim/devicetype.html:49
#: netbox/templates/dcim/moduletype.html:51 netbox/templates/dcim/rack.html:81
#: netbox/templates/dcim/racktype.html:41
@ -4142,7 +4143,7 @@ msgid "Outer Dimensions"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:316 netbox/dcim/forms/model_forms.py:234
#: netbox/dcim/forms/model_forms.py:315 netbox/templates/dcim/device.html:315
#: netbox/dcim/forms/model_forms.py:315 netbox/templates/dcim/device.html:321
#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3
msgid "Dimensions"
msgstr ""
@ -4159,7 +4160,7 @@ msgid "Rack type"
msgstr ""
#: netbox/dcim/forms/bulk_edit.py:384 netbox/dcim/forms/bulk_edit.py:765
#: netbox/dcim/forms/bulk_edit.py:826 netbox/templates/dcim/device.html:104
#: netbox/dcim/forms/bulk_edit.py:826 netbox/templates/dcim/device.html:110
#: netbox/templates/dcim/module.html:77 netbox/templates/dcim/modulebay.html:70
#: netbox/templates/dcim/rack.html:57
#: netbox/templates/virtualization/virtualmachine.html:35
@ -4177,7 +4178,7 @@ msgstr ""
#: netbox/dcim/forms/bulk_import.py:295 netbox/dcim/forms/bulk_import.py:453
#: netbox/dcim/forms/bulk_import.py:638 netbox/dcim/forms/filtersets.py:282
#: netbox/dcim/forms/filtersets.py:513 netbox/dcim/forms/filtersets.py:684
#: netbox/dcim/forms/filtersets.py:824 netbox/templates/dcim/device.html:98
#: netbox/dcim/forms/filtersets.py:824 netbox/templates/dcim/device.html:104
#: netbox/templates/dcim/devicetype.html:65
#: netbox/templates/dcim/moduletype.html:47 netbox/templates/dcim/rack.html:65
#: netbox/templates/dcim/racktype.html:28
@ -4196,7 +4197,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:861
#: netbox/dcim/forms/object_create.py:404 netbox/dcim/tables/devices.py:171
#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:225
#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:30
#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:36
#: netbox/templates/dcim/inc/cable_termination.html:16
#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13
#: netbox/templates/dcim/rack/base.html:4
@ -4239,7 +4240,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:1083 netbox/dcim/forms/model_forms.py:1111
#: netbox/dcim/forms/model_forms.py:1142 netbox/dcim/forms/model_forms.py:1161
#: netbox/dcim/forms/model_forms.py:1179 netbox/dcim/forms/object_create.py:123
#: netbox/dcim/tables/devicetypes.py:82 netbox/templates/dcim/device.html:88
#: netbox/dcim/tables/devicetypes.py:82 netbox/templates/dcim/device.html:94
#: netbox/templates/dcim/devicebay.html:52 netbox/templates/dcim/module.html:61
msgid "Device Type"
msgstr ""
@ -4310,7 +4311,7 @@ msgstr ""
#: netbox/dcim/forms/bulk_edit.py:748 netbox/dcim/forms/bulk_import.py:556
#: netbox/dcim/forms/filtersets.py:816 netbox/dcim/forms/model_forms.py:555
#: netbox/dcim/forms/model_forms.py:618 netbox/dcim/tables/devices.py:192
#: netbox/extras/filtersets.py:656 netbox/templates/dcim/device.html:186
#: netbox/extras/filtersets.py:656 netbox/templates/dcim/device.html:192
#: netbox/templates/dcim/platform.html:26
#: netbox/templates/virtualization/virtualmachine.html:27
#: netbox/virtualization/forms/bulk_edit.py:142
@ -4326,7 +4327,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:627 netbox/dcim/tables/devices.py:212
#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:364
#: netbox/ipam/forms/filtersets.py:439 netbox/ipam/forms/filtersets.py:472
#: netbox/templates/dcim/device.html:239
#: netbox/templates/dcim/device.html:245
#: netbox/templates/virtualization/cluster.html:10
#: netbox/templates/virtualization/virtualmachine.html:92
#: netbox/templates/virtualization/virtualmachine.html:101
@ -5085,7 +5086,7 @@ msgid "{side_upper} side termination not found: {device} {name}"
msgstr ""
#: netbox/dcim/forms/bulk_import.py:1461 netbox/dcim/forms/model_forms.py:891
#: netbox/dcim/tables/devices.py:1065 netbox/templates/dcim/device.html:132
#: netbox/dcim/tables/devices.py:1065 netbox/templates/dcim/device.html:138
#: netbox/templates/dcim/virtualchassis.html:27
#: netbox/templates/dcim/virtualchassis.html:67
msgid "Master"
@ -5116,7 +5117,7 @@ msgid "Single or three-phase"
msgstr ""
#: netbox/dcim/forms/bulk_import.py:1607 netbox/dcim/forms/model_forms.py:1847
#: netbox/templates/dcim/device.html:190
#: netbox/templates/dcim/device.html:196
#: netbox/templates/dcim/virtualdevicecontext.html:30
#: netbox/templates/virtualization/virtualmachine.html:52
msgid "Primary IPv4"
@ -5127,7 +5128,7 @@ msgid "IPv4 address with mask, e.g. 1.2.3.4/24"
msgstr ""
#: netbox/dcim/forms/bulk_import.py:1614 netbox/dcim/forms/model_forms.py:1856
#: netbox/templates/dcim/device.html:206
#: netbox/templates/dcim/device.html:212
#: netbox/templates/dcim/virtualdevicecontext.html:41
#: netbox/templates/virtualization/virtualmachine.html:68
msgid "Primary IPv6"
@ -5341,12 +5342,12 @@ msgstr ""
msgid "A virtual chassis member already exists in position {vc_position}."
msgstr ""
#: netbox/dcim/forms/mixins.py:27 netbox/dcim/forms/mixins.py:75
#: netbox/dcim/forms/mixins.py:27 netbox/dcim/forms/mixins.py:79
#: netbox/ipam/forms/bulk_edit.py:425 netbox/ipam/forms/model_forms.py:617
msgid "Scope type"
msgstr ""
#: netbox/dcim/forms/mixins.py:30 netbox/dcim/forms/mixins.py:78
#: netbox/dcim/forms/mixins.py:30 netbox/dcim/forms/mixins.py:82
#: netbox/ipam/forms/bulk_edit.py:270 netbox/ipam/forms/bulk_edit.py:428
#: netbox/ipam/forms/bulk_edit.py:447 netbox/ipam/forms/filtersets.py:181
#: netbox/ipam/forms/model_forms.py:231 netbox/ipam/forms/model_forms.py:620
@ -5365,7 +5366,7 @@ msgstr ""
msgid "Scope"
msgstr ""
#: netbox/dcim/forms/mixins.py:104 netbox/ipam/forms/bulk_import.py:452
#: netbox/dcim/forms/mixins.py:108 netbox/ipam/forms/bulk_import.py:452
msgid "Scope type (app & model)"
msgstr ""
@ -5474,7 +5475,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:1290 netbox/dcim/forms/model_forms.py:1761
#: netbox/dcim/tables/connections.py:27
#: netbox/templates/dcim/consoleport.html:17
#: netbox/templates/dcim/consoleserverport.html:74
#: netbox/templates/dcim/consoleserverport.html:73
#: netbox/templates/dcim/frontport.html:112
msgid "Console Port"
msgstr ""
@ -5489,7 +5490,7 @@ msgstr ""
#: netbox/dcim/forms/model_forms.py:1292 netbox/dcim/forms/model_forms.py:1763
#: netbox/templates/circuits/inc/circuit_termination_fields.html:53
#: netbox/templates/dcim/consoleport.html:76
#: netbox/templates/dcim/consoleserverport.html:77
#: netbox/templates/dcim/consoleserverport.html:76
#: netbox/templates/dcim/frontport.html:17
#: netbox/templates/dcim/frontport.html:115
#: netbox/templates/dcim/interface.html:244
@ -5501,7 +5502,7 @@ msgstr ""
#: netbox/dcim/tables/devices.py:750
#: netbox/templates/circuits/inc/circuit_termination_fields.html:54
#: netbox/templates/dcim/consoleport.html:79
#: netbox/templates/dcim/consoleserverport.html:80
#: netbox/templates/dcim/consoleserverport.html:79
#: netbox/templates/dcim/frontport.html:50
#: netbox/templates/dcim/frontport.html:118
#: netbox/templates/dcim/interface.html:247
@ -7233,7 +7234,7 @@ msgid "VMs"
msgstr ""
#: netbox/dcim/tables/devices.py:111 netbox/dcim/tables/devices.py:226
#: netbox/extras/forms/model_forms.py:712 netbox/templates/dcim/device.html:112
#: netbox/extras/forms/model_forms.py:712 netbox/templates/dcim/device.html:118
#: netbox/templates/dcim/devicerole.html:48
#: netbox/templates/dcim/platform.html:41
#: netbox/templates/extras/configtemplate.html:10
@ -7244,7 +7245,7 @@ msgstr ""
msgid "Config Template"
msgstr ""
#: netbox/dcim/tables/devices.py:197 netbox/dcim/tables/devices.py:1106
#: netbox/dcim/tables/devices.py:197 netbox/dcim/tables/devices.py:1105
#: netbox/ipam/forms/bulk_import.py:587 netbox/ipam/forms/model_forms.py:316
#: netbox/ipam/forms/model_forms.py:329 netbox/ipam/tables/ip.py:314
#: netbox/ipam/tables/ip.py:381 netbox/ipam/tables/ip.py:391
@ -7253,12 +7254,12 @@ msgstr ""
msgid "IP Address"
msgstr ""
#: netbox/dcim/tables/devices.py:201 netbox/dcim/tables/devices.py:1110
#: netbox/dcim/tables/devices.py:201 netbox/dcim/tables/devices.py:1109
#: netbox/virtualization/tables/virtualmachines.py:56
msgid "IPv4 Address"
msgstr ""
#: netbox/dcim/tables/devices.py:205 netbox/dcim/tables/devices.py:1114
#: netbox/dcim/tables/devices.py:205 netbox/dcim/tables/devices.py:1113
#: netbox/virtualization/tables/virtualmachines.py:60
msgid "IPv6 Address"
msgstr ""
@ -7296,7 +7297,7 @@ msgstr ""
msgid "Power outlets"
msgstr ""
#: netbox/dcim/tables/devices.py:256 netbox/dcim/tables/devices.py:1119
#: netbox/dcim/tables/devices.py:256 netbox/dcim/tables/devices.py:1118
#: netbox/dcim/tables/devicetypes.py:133 netbox/dcim/views.py:1173
#: netbox/dcim/views.py:1473 netbox/dcim/views.py:2226
#: netbox/netbox/navigation/menu.py:95 netbox/netbox/navigation/menu.py:259
@ -7576,7 +7577,7 @@ msgid "Racks"
msgstr ""
#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:145
#: netbox/templates/dcim/device.html:318
#: netbox/templates/dcim/device.html:324
#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14
msgid "Height"
msgstr ""
@ -10645,7 +10646,7 @@ msgstr ""
msgid "Defined range exceeds maximum supported size ({max_size})"
msgstr ""
#: netbox/ipam/models/ip.py:721 netbox/tenancy/models/contacts.py:78
#: netbox/ipam/models/ip.py:721 netbox/tenancy/models/contacts.py:76
msgid "address"
msgstr ""
@ -10887,7 +10888,7 @@ msgstr ""
#: netbox/ipam/tables/ip.py:78 netbox/ipam/tables/ip.py:222
#: netbox/ipam/tables/ip.py:281 netbox/ipam/tables/vlans.py:55
#: netbox/templates/dcim/device.html:260
#: netbox/templates/dcim/device.html:266
#: netbox/templates/ipam/aggregate.html:24
#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102
msgid "Utilization"
@ -11170,7 +11171,7 @@ msgstr ""
msgid "Tab"
msgstr ""
#: netbox/netbox/choices.py:193 netbox/templates/dcim/device.html:327
#: netbox/netbox/choices.py:193 netbox/templates/dcim/device.html:333
#: netbox/templates/dcim/rack.html:107
msgid "Kilograms"
msgstr ""
@ -11179,7 +11180,7 @@ msgstr ""
msgid "Grams"
msgstr ""
#: netbox/netbox/choices.py:195 netbox/templates/dcim/device.html:328
#: netbox/netbox/choices.py:195 netbox/templates/dcim/device.html:334
#: netbox/templates/dcim/rack.html:108
msgid "Pounds"
msgstr ""
@ -11527,7 +11528,7 @@ msgstr ""
msgid "Modules"
msgstr ""
#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160
#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:166
#: netbox/templates/dcim/virtualdevicecontext.html:8
msgid "Virtual Device Contexts"
msgstr ""
@ -11605,7 +11606,7 @@ msgstr ""
msgid "Service Templates"
msgstr ""
#: netbox/netbox/navigation/menu.py:213 netbox/templates/dcim/device.html:302
#: netbox/netbox/navigation/menu.py:213 netbox/templates/dcim/device.html:308
#: netbox/templates/ipam/ipaddress.html:118
#: netbox/templates/virtualization/virtualmachine.html:154
msgid "Services"
@ -12043,6 +12044,7 @@ msgid "Toggle all"
msgstr ""
#: netbox/netbox/tables/columns.py:307
#: netbox/templates/inc/table_controls_htmx.html:35
msgid "Toggle Dropdown"
msgstr ""
@ -12507,7 +12509,7 @@ msgstr ""
#: netbox/templates/circuits/inc/circuit_termination_fields.html:20
#: netbox/templates/dcim/consoleport.html:59
#: netbox/templates/dcim/consoleserverport.html:60
#: netbox/templates/dcim/consoleserverport.html:59
#: netbox/templates/dcim/powerfeed.html:114
msgid "Marked as connected"
msgstr ""
@ -12551,7 +12553,7 @@ msgstr ""
#: netbox/templates/circuits/inc/circuit_termination_fields.html:49
#: netbox/templates/dcim/consoleport.html:69
#: netbox/templates/dcim/consoleserverport.html:70
#: netbox/templates/dcim/consoleserverport.html:69
#: netbox/templates/dcim/frontport.html:102
#: netbox/templates/dcim/interface.html:237
#: netbox/templates/dcim/interface.html:257
@ -13070,7 +13072,7 @@ msgid "Rename Selected"
msgstr ""
#: netbox/templates/dcim/consoleport.html:65
#: netbox/templates/dcim/consoleserverport.html:66
#: netbox/templates/dcim/consoleserverport.html:65
#: netbox/templates/dcim/frontport.html:98
#: netbox/templates/dcim/interface.html:233
#: netbox/templates/dcim/poweroutlet.html:83
@ -13078,86 +13080,86 @@ msgstr ""
msgid "Not Connected"
msgstr ""
#: netbox/templates/dcim/device.html:34
#: netbox/templates/dcim/device.html:40
msgid "Highlight device in rack"
msgstr ""
#: netbox/templates/dcim/device.html:55
#: netbox/templates/dcim/device.html:61
msgid "Not racked"
msgstr ""
#: netbox/templates/dcim/device.html:62 netbox/templates/dcim/site.html:94
#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:94
msgid "GPS Coordinates"
msgstr ""
#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81
#: netbox/templates/dcim/device.html:74 netbox/templates/dcim/site.html:81
#: netbox/templates/dcim/site.html:100
msgid "Map"
msgstr ""
#: netbox/templates/dcim/device.html:108
#: netbox/templates/dcim/device.html:114
#: netbox/templates/dcim/inventoryitem.html:60
#: netbox/templates/dcim/module.html:81 netbox/templates/dcim/modulebay.html:74
#: netbox/templates/dcim/rack.html:61
msgid "Asset Tag"
msgstr ""
#: netbox/templates/dcim/device.html:123
#: netbox/templates/dcim/device.html:129
msgid "View Virtual Chassis"
msgstr ""
#: netbox/templates/dcim/device.html:164
#: netbox/templates/dcim/device.html:170
msgid "Create VDC"
msgstr ""
#: netbox/templates/dcim/device.html:175
#: netbox/templates/dcim/device.html:181
#: netbox/templates/dcim/device_edit.html:66
#: netbox/virtualization/forms/model_forms.py:230
msgid "Management"
msgstr ""
#: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211
#: netbox/templates/dcim/device.html:227
#: netbox/templates/dcim/device.html:201 netbox/templates/dcim/device.html:217
#: netbox/templates/dcim/device.html:233
#: netbox/templates/virtualization/virtualmachine.html:57
#: netbox/templates/virtualization/virtualmachine.html:73
msgid "NAT for"
msgstr ""
#: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213
#: netbox/templates/dcim/device.html:229
#: netbox/templates/dcim/device.html:203 netbox/templates/dcim/device.html:219
#: netbox/templates/dcim/device.html:235
#: netbox/templates/virtualization/virtualmachine.html:59
#: netbox/templates/virtualization/virtualmachine.html:75
msgid "NAT"
msgstr ""
#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73
#: netbox/templates/dcim/device.html:258 netbox/templates/dcim/rack.html:73
msgid "Power Utilization"
msgstr ""
#: netbox/templates/dcim/device.html:256
#: netbox/templates/dcim/device.html:262
msgid "Input"
msgstr ""
#: netbox/templates/dcim/device.html:257
#: netbox/templates/dcim/device.html:263
msgid "Outlets"
msgstr ""
#: netbox/templates/dcim/device.html:258
#: netbox/templates/dcim/device.html:264
msgid "Allocated"
msgstr ""
#: netbox/templates/dcim/device.html:268 netbox/templates/dcim/device.html:270
#: netbox/templates/dcim/device.html:286
#: netbox/templates/dcim/device.html:274 netbox/templates/dcim/device.html:276
#: netbox/templates/dcim/device.html:292
#: netbox/templates/dcim/powerfeed.html:67
msgid "VA"
msgstr ""
#: netbox/templates/dcim/device.html:280
#: netbox/templates/dcim/device.html:286
msgctxt "Leg of a power feed"
msgid "Leg"
msgstr ""
#: netbox/templates/dcim/device.html:306
#: netbox/templates/dcim/device.html:312
#: netbox/templates/virtualization/virtualmachine.html:158
msgid "Add a service"
msgstr ""
@ -15189,63 +15191,55 @@ msgstr ""
msgid "Assigned contact"
msgstr ""
#: netbox/tenancy/models/contacts.py:33
#: netbox/tenancy/models/contacts.py:32
msgid "contact group"
msgstr ""
#: netbox/tenancy/models/contacts.py:34
#: netbox/tenancy/models/contacts.py:33
msgid "contact groups"
msgstr ""
#: netbox/tenancy/models/contacts.py:43
#: netbox/tenancy/models/contacts.py:42
msgid "contact role"
msgstr ""
#: netbox/tenancy/models/contacts.py:44
#: netbox/tenancy/models/contacts.py:43
msgid "contact roles"
msgstr ""
#: netbox/tenancy/models/contacts.py:64
#: netbox/tenancy/models/contacts.py:62
msgid "title"
msgstr ""
#: netbox/tenancy/models/contacts.py:69
#: netbox/tenancy/models/contacts.py:67
msgid "phone"
msgstr ""
#: netbox/tenancy/models/contacts.py:74
#: netbox/tenancy/models/contacts.py:72
msgid "email"
msgstr ""
#: netbox/tenancy/models/contacts.py:83
#: netbox/tenancy/models/contacts.py:81
msgid "link"
msgstr ""
#: netbox/tenancy/models/contacts.py:93
#: netbox/tenancy/models/contacts.py:91
msgid "contact"
msgstr ""
#: netbox/tenancy/models/contacts.py:94
#: netbox/tenancy/models/contacts.py:92
msgid "contacts"
msgstr ""
#: netbox/tenancy/models/contacts.py:108
msgid "contact group membership"
msgstr ""
#: netbox/tenancy/models/contacts.py:109
msgid "contact group memberships"
msgstr ""
#: netbox/tenancy/models/contacts.py:153
#: netbox/tenancy/models/contacts.py:139
msgid "contact assignment"
msgstr ""
#: netbox/tenancy/models/contacts.py:154
#: netbox/tenancy/models/contacts.py:140
msgid "contact assignments"
msgstr ""
#: netbox/tenancy/models/contacts.py:170
#: netbox/tenancy/models/contacts.py:156
#, python-brace-format
msgid "Contacts cannot be assigned to this object type ({type})."
msgstr ""

View File

@ -14,13 +14,13 @@ __all__ = (
)
@strawberry_django.filter(models.Group, lookups=True)
@strawberry_django.filter_type(models.Group, lookups=True)
class GroupFilter(BaseObjectTypeFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
description: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.User, lookups=True)
@strawberry_django.filter_type(models.User, lookups=True)
class UserFilter(BaseObjectTypeFilterMixin):
username: FilterLookup[str] | None = strawberry_django.filter_field()
first_name: FilterLookup[str] | None = strawberry_django.filter_field()

View File

@ -39,7 +39,7 @@ __all__ = (
)
@strawberry_django.filter(models.Cluster, lookups=True)
@strawberry_django.filter_type(models.Cluster, lookups=True)
class ClusterFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
type: Annotated['ClusterTypeFilter', strawberry.lazy('virtualization.graphql.filters')] | None = (
@ -58,19 +58,19 @@ class ClusterFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, P
)
@strawberry_django.filter(models.ClusterGroup, lookups=True)
@strawberry_django.filter_type(models.ClusterGroup, lookups=True)
class ClusterGroupFilter(ContactFilterMixin, OrganizationalModelFilterMixin):
vlan_groups: Annotated['VLANGroupFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
strawberry_django.filter_field()
)
@strawberry_django.filter(models.ClusterType, lookups=True)
@strawberry_django.filter_type(models.ClusterType, lookups=True)
class ClusterTypeFilter(OrganizationalModelFilterMixin):
pass
@strawberry_django.filter(models.VirtualMachine, lookups=True)
@strawberry_django.filter_type(models.VirtualMachine, lookups=True)
class VirtualMachineFilter(
ContactFilterMixin,
ImageAttachmentFilterMixin,
@ -130,7 +130,7 @@ class VirtualMachineFilter(
)
@strawberry_django.filter(models.VMInterface, lookups=True)
@strawberry_django.filter_type(models.VMInterface, lookups=True)
class VMInterfaceFilter(VMComponentFilterMixin, InterfaceBaseFilterMixin):
ip_addresses: Annotated['IPAddressFilter', strawberry.lazy('ipam.graphql.filters')] | None = (
strawberry_django.filter_field()
@ -155,7 +155,7 @@ class VMInterfaceFilter(VMComponentFilterMixin, InterfaceBaseFilterMixin):
)
@strawberry_django.filter(models.VirtualDisk, lookups=True)
@strawberry_django.filter_type(models.VirtualDisk, lookups=True)
class VirtualDiskFilter(VMComponentFilterMixin):
size: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
strawberry_django.filter_field()

View File

@ -31,12 +31,12 @@ __all__ = (
)
@strawberry_django.filter(models.TunnelGroup, lookups=True)
@strawberry_django.filter_type(models.TunnelGroup, lookups=True)
class TunnelGroupFilter(OrganizationalModelFilterMixin):
pass
@strawberry_django.filter(models.TunnelTermination, lookups=True)
@strawberry_django.filter_type(models.TunnelTermination, lookups=True)
class TunnelTerminationFilter(
BaseObjectTypeFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin, ChangeLogFilterMixin
):
@ -56,7 +56,7 @@ class TunnelTerminationFilter(
outside_ip_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.Tunnel, lookups=True)
@strawberry_django.filter_type(models.Tunnel, lookups=True)
class TunnelFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
status: Annotated['TunnelStatusEnum', strawberry.lazy('vpn.graphql.enums')] | None = (
@ -80,7 +80,7 @@ class TunnelFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.IKEProposal, lookups=True)
@strawberry_django.filter_type(models.IKEProposal, lookups=True)
class IKEProposalFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
authentication_method: Annotated['AuthenticationMethodEnum', strawberry.lazy('vpn.graphql.enums')] | None = (
@ -101,7 +101,7 @@ class IKEProposalFilter(PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.IKEPolicy, lookups=True)
@strawberry_django.filter_type(models.IKEPolicy, lookups=True)
class IKEPolicyFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
version: Annotated['IKEVersionEnum', strawberry.lazy('vpn.graphql.enums')] | None = strawberry_django.filter_field()
@ -112,7 +112,7 @@ class IKEPolicyFilter(PrimaryModelFilterMixin):
preshared_key: FilterLookup[str] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.IPSecProposal, lookups=True)
@strawberry_django.filter_type(models.IPSecProposal, lookups=True)
class IPSecProposalFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
encryption_algorithm: Annotated['EncryptionAlgorithmEnum', strawberry.lazy('vpn.graphql.enums')] | None = (
@ -132,7 +132,7 @@ class IPSecProposalFilter(PrimaryModelFilterMixin):
)
@strawberry_django.filter(models.IPSecPolicy, lookups=True)
@strawberry_django.filter_type(models.IPSecPolicy, lookups=True)
class IPSecPolicyFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
proposals: Annotated['IPSecProposalFilter', strawberry.lazy('vpn.graphql.filters')] | None = (
@ -141,7 +141,7 @@ class IPSecPolicyFilter(PrimaryModelFilterMixin):
pfs_group: Annotated['DHGroupEnum', strawberry.lazy('vpn.graphql.enums')] | None = strawberry_django.filter_field()
@strawberry_django.filter(models.IPSecProfile, lookups=True)
@strawberry_django.filter_type(models.IPSecProfile, lookups=True)
class IPSecProfileFilter(PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
mode: Annotated['IPSecModeEnum', strawberry.lazy('vpn.graphql.enums')] | None = strawberry_django.filter_field()
@ -155,7 +155,7 @@ class IPSecProfileFilter(PrimaryModelFilterMixin):
ipsec_policy_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.L2VPN, lookups=True)
@strawberry_django.filter_type(models.L2VPN, lookups=True)
class L2VPNFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
slug: FilterLookup[str] | None = strawberry_django.filter_field()
@ -174,7 +174,7 @@ class L2VPNFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixi
)
@strawberry_django.filter(models.L2VPNTermination, lookups=True)
@strawberry_django.filter_type(models.L2VPNTermination, lookups=True)
class L2VPNTerminationFilter(NetBoxModelFilterMixin):
l2vpn: Annotated['L2VPNFilter', strawberry.lazy('vpn.graphql.filters')] | None = strawberry_django.filter_field()
l2vpn_id: ID | None = strawberry_django.filter_field()

View File

@ -23,12 +23,12 @@ __all__ = (
)
@strawberry_django.filter(models.WirelessLANGroup, lookups=True)
@strawberry_django.filter_type(models.WirelessLANGroup, lookups=True)
class WirelessLANGroupFilter(NestedGroupModelFilterMixin):
pass
@strawberry_django.filter(models.WirelessLAN, lookups=True)
@strawberry_django.filter_type(models.WirelessLAN, lookups=True)
class WirelessLANFilter(
WirelessAuthenticationBaseFilterMixin,
ScopedFilterMixin,
@ -47,7 +47,7 @@ class WirelessLANFilter(
vlan_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.WirelessLink, lookups=True)
@strawberry_django.filter_type(models.WirelessLink, lookups=True)
class WirelessLinkFilter(
WirelessAuthenticationBaseFilterMixin,
DistanceFilterMixin,