mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-17 01:02:18 -06:00
FIxes #19506: Add filter forms for component templates (#21057)
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
CI / build (20.x, 3.10) (push) Has been cancelled
CI / build (20.x, 3.11) (push) Has been cancelled
CI / build (20.x, 3.12) (push) Has been cancelled
Lock threads / lock (push) Has been cancelled
Close stale issues/PRs / stale (push) Has been cancelled
Close incomplete issues / stale (push) Has been cancelled
Update translation strings / makemessages (push) Has been cancelled
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
CI / build (20.x, 3.10) (push) Has been cancelled
CI / build (20.x, 3.11) (push) Has been cancelled
CI / build (20.x, 3.12) (push) Has been cancelled
Lock threads / lock (push) Has been cancelled
Close stale issues/PRs / stale (push) Has been cancelled
Close incomplete issues / stale (push) Has been cancelled
Update translation strings / makemessages (push) Has been cancelled
Co-authored-by: Callum <callum@reja.au> Co-authored-by: Callum <96725140+callumau@users.noreply.github.com>
This commit is contained in:
@@ -24,35 +24,45 @@ __all__ = (
|
|||||||
'CableFilterForm',
|
'CableFilterForm',
|
||||||
'ConsoleConnectionFilterForm',
|
'ConsoleConnectionFilterForm',
|
||||||
'ConsolePortFilterForm',
|
'ConsolePortFilterForm',
|
||||||
|
'ConsolePortTemplateFilterForm',
|
||||||
'ConsoleServerPortFilterForm',
|
'ConsoleServerPortFilterForm',
|
||||||
|
'ConsoleServerPortTemplateFilterForm',
|
||||||
'DeviceBayFilterForm',
|
'DeviceBayFilterForm',
|
||||||
|
'DeviceBayTemplateFilterForm',
|
||||||
'DeviceFilterForm',
|
'DeviceFilterForm',
|
||||||
'DeviceRoleFilterForm',
|
'DeviceRoleFilterForm',
|
||||||
'DeviceTypeFilterForm',
|
'DeviceTypeFilterForm',
|
||||||
'FrontPortFilterForm',
|
'FrontPortFilterForm',
|
||||||
|
'FrontPortTemplateFilterForm',
|
||||||
'InterfaceConnectionFilterForm',
|
'InterfaceConnectionFilterForm',
|
||||||
'InterfaceFilterForm',
|
'InterfaceFilterForm',
|
||||||
|
'InterfaceTemplateFilterForm',
|
||||||
'InventoryItemFilterForm',
|
'InventoryItemFilterForm',
|
||||||
|
'InventoryItemTemplateFilterForm',
|
||||||
'InventoryItemRoleFilterForm',
|
'InventoryItemRoleFilterForm',
|
||||||
'LocationFilterForm',
|
'LocationFilterForm',
|
||||||
'MACAddressFilterForm',
|
'MACAddressFilterForm',
|
||||||
'ManufacturerFilterForm',
|
'ManufacturerFilterForm',
|
||||||
'ModuleFilterForm',
|
'ModuleFilterForm',
|
||||||
'ModuleBayFilterForm',
|
'ModuleBayFilterForm',
|
||||||
|
'ModuleBayTemplateFilterForm',
|
||||||
'ModuleTypeFilterForm',
|
'ModuleTypeFilterForm',
|
||||||
'ModuleTypeProfileFilterForm',
|
'ModuleTypeProfileFilterForm',
|
||||||
'PlatformFilterForm',
|
'PlatformFilterForm',
|
||||||
'PowerConnectionFilterForm',
|
'PowerConnectionFilterForm',
|
||||||
'PowerFeedFilterForm',
|
'PowerFeedFilterForm',
|
||||||
'PowerOutletFilterForm',
|
'PowerOutletFilterForm',
|
||||||
|
'PowerOutletTemplateFilterForm',
|
||||||
'PowerPanelFilterForm',
|
'PowerPanelFilterForm',
|
||||||
'PowerPortFilterForm',
|
'PowerPortFilterForm',
|
||||||
|
'PowerPortTemplateFilterForm',
|
||||||
'RackFilterForm',
|
'RackFilterForm',
|
||||||
'RackElevationFilterForm',
|
'RackElevationFilterForm',
|
||||||
'RackReservationFilterForm',
|
'RackReservationFilterForm',
|
||||||
'RackRoleFilterForm',
|
'RackRoleFilterForm',
|
||||||
'RackTypeFilterForm',
|
'RackTypeFilterForm',
|
||||||
'RearPortFilterForm',
|
'RearPortFilterForm',
|
||||||
|
'RearPortTemplateFilterForm',
|
||||||
'RegionFilterForm',
|
'RegionFilterForm',
|
||||||
'SiteFilterForm',
|
'SiteFilterForm',
|
||||||
'SiteGroupFilterForm',
|
'SiteGroupFilterForm',
|
||||||
@@ -1290,6 +1300,23 @@ class PowerFeedFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
# Device components
|
# Device components
|
||||||
#
|
#
|
||||||
|
|
||||||
|
class DeviceComponentTemplateFilterForm(NetBoxModelFilterSetForm):
|
||||||
|
device_type_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=DeviceType.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_('Device type'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ModularDeviceComponentTemplateFilterForm(DeviceComponentTemplateFilterForm):
|
||||||
|
module_type_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=ModuleType.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={'manufacturer_id': '$manufacturer_id'},
|
||||||
|
label=_('Module Type'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class CabledFilterForm(forms.Form):
|
class CabledFilterForm(forms.Form):
|
||||||
cabled = forms.NullBooleanField(
|
cabled = forms.NullBooleanField(
|
||||||
label=_('Cabled'),
|
label=_('Cabled'),
|
||||||
@@ -1342,6 +1369,20 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class ConsolePortTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = ConsolePortTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=ConsolePortTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
||||||
model = ConsoleServerPort
|
model = ConsoleServerPort
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1367,6 +1408,20 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class ConsoleServerPortTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = ConsoleServerPortTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=ConsolePortTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
||||||
model = PowerPort
|
model = PowerPort
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1387,6 +1442,20 @@ class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class PowerPortTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = PowerPortTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=PowerPortTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
||||||
model = PowerOutlet
|
model = PowerOutlet
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1416,6 +1485,20 @@ class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class PowerOutletTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = PowerOutletTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=PowerOutletTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
||||||
model = Interface
|
model = Interface
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1543,6 +1626,51 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class InterfaceTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = InterfaceTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', 'enabled', 'mgmt_only', name=_('Attributes')),
|
||||||
|
FieldSet('poe_mode', 'poe_type', name=_('PoE')),
|
||||||
|
FieldSet('rf_role', name=_('Wireless')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=InterfaceTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
enabled = forms.NullBooleanField(
|
||||||
|
label=_('Enabled'),
|
||||||
|
required=False,
|
||||||
|
widget=forms.Select(
|
||||||
|
choices=BOOLEAN_WITH_BLANK_CHOICES
|
||||||
|
)
|
||||||
|
)
|
||||||
|
mgmt_only = forms.NullBooleanField(
|
||||||
|
label=_('Management only'),
|
||||||
|
required=False,
|
||||||
|
widget=forms.Select(
|
||||||
|
choices=BOOLEAN_WITH_BLANK_CHOICES
|
||||||
|
)
|
||||||
|
)
|
||||||
|
poe_mode = forms.MultipleChoiceField(
|
||||||
|
choices=InterfacePoEModeChoices,
|
||||||
|
required=False,
|
||||||
|
label=_('PoE mode')
|
||||||
|
)
|
||||||
|
poe_type = forms.MultipleChoiceField(
|
||||||
|
choices=InterfacePoETypeChoices,
|
||||||
|
required=False,
|
||||||
|
label=_('PoE type')
|
||||||
|
)
|
||||||
|
rf_role = forms.MultipleChoiceField(
|
||||||
|
choices=WirelessRoleChoices,
|
||||||
|
required=False,
|
||||||
|
label=_('Wireless role')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
FieldSet('q', 'filter_id', 'tag'),
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
@@ -1567,6 +1695,24 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class FrontPortTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = FrontPortTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', 'color', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=PortTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
color = ColorField(
|
||||||
|
label=_('Color'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
||||||
model = RearPort
|
model = RearPort
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1591,6 +1737,24 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class RearPortTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = RearPortTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'type', 'color', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
type = forms.MultipleChoiceField(
|
||||||
|
label=_('Type'),
|
||||||
|
choices=PortTypeChoices,
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
color = ColorField(
|
||||||
|
label=_('Color'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ModuleBayFilterForm(DeviceComponentFilterForm):
|
class ModuleBayFilterForm(DeviceComponentFilterForm):
|
||||||
model = ModuleBay
|
model = ModuleBay
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1609,6 +1773,19 @@ class ModuleBayFilterForm(DeviceComponentFilterForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ModuleBayTemplateFilterForm(ModularDeviceComponentTemplateFilterForm):
|
||||||
|
model = ModuleBayTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'position', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', 'module_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
position = forms.CharField(
|
||||||
|
label=_('Position'),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DeviceBayFilterForm(DeviceComponentFilterForm):
|
class DeviceBayFilterForm(DeviceComponentFilterForm):
|
||||||
model = DeviceBay
|
model = DeviceBay
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1623,6 +1800,15 @@ class DeviceBayFilterForm(DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceBayTemplateFilterForm(DeviceComponentTemplateFilterForm):
|
||||||
|
model = DeviceBayTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class InventoryItemFilterForm(DeviceComponentFilterForm):
|
class InventoryItemFilterForm(DeviceComponentFilterForm):
|
||||||
model = InventoryItem
|
model = InventoryItem
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@@ -1670,6 +1856,25 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
|
|||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
class InventoryItemTemplateFilterForm(DeviceComponentTemplateFilterForm):
|
||||||
|
model = InventoryItemTemplate
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
|
FieldSet('name', 'label', 'role_id', 'manufacturer_id', name=_('Attributes')),
|
||||||
|
FieldSet('device_type_id', name=_('Device')),
|
||||||
|
)
|
||||||
|
role_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=InventoryItemRole.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_('Role')
|
||||||
|
)
|
||||||
|
manufacturer_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=Manufacturer.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_('Manufacturer')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device component roles
|
# Device component roles
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user