1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Add list view for device components (#3719)

* Initial Work on #3564

* #3564 - Fixup issue with filter on interface

* #3564 - Fix PEP8 errors

* #3564 - Finalize fields, readjust order, reduce repetition

* #3564 - Update Changelog

* #3564 - Fix extra space

* #3564 - Change interface table ordering

* #3564 - Minor cleanup

* #3564 - Add Import Links

* Fix PEP8
This commit is contained in:
Daniel Sheppard
2019-12-05 16:10:49 -06:00
committed by Jeremy Stretch
parent fe2c682dc3
commit 8cbd2f5c2d
8 changed files with 345 additions and 0 deletions

View File

@@ -56,6 +56,33 @@ def get_device_by_name_or_pk(name):
return device
class DeviceComponentFilterForm(BootstrapMixin, forms.Form):
field_order = [
'q', 'region', 'site'
]
q = forms.CharField(
required=False,
label='Search'
)
region = TreeNodeChoiceField(
queryset=Region.objects.all(),
required=False,
widget=APISelect(
api_url="/api/dcim/regions/"
)
)
site = forms.ModelChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
help_text='Name of parent site',
error_messages={
'invalid_choice': 'Site not found.',
}
)
class InterfaceCommonForm:
def clean(self):
@@ -2063,6 +2090,11 @@ class DeviceBulkAddInterfaceForm(DeviceBulkAddComponentForm):
# Console ports
#
class ConsolePortFilterForm(DeviceComponentFilterForm):
model = ConsolePort
class ConsolePortForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False
@@ -2115,6 +2147,11 @@ class ConsolePortCSVForm(forms.ModelForm):
# Console server ports
#
class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
model = ConsoleServerPort
class ConsoleServerPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False
@@ -2202,6 +2239,11 @@ class ConsoleServerPortCSVForm(forms.ModelForm):
# Power ports
#
class PowerPortFilterForm(DeviceComponentFilterForm):
model = PowerPort
class PowerPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False
@@ -2264,6 +2306,11 @@ class PowerPortCSVForm(forms.ModelForm):
# Power outlets
#
class PowerOutletFilterForm(DeviceComponentFilterForm):
model = PowerOutlet
class PowerOutletForm(BootstrapMixin, forms.ModelForm):
power_port = forms.ModelChoiceField(
queryset=PowerPort.objects.all(),
@@ -2427,6 +2474,11 @@ class PowerOutletBulkDisconnectForm(ConfirmationForm):
# Interfaces
#
class InterfaceFilterForm(DeviceComponentFilterForm):
model = Interface
class InterfaceForm(InterfaceCommonForm, BootstrapMixin, forms.ModelForm):
untagged_vlan = forms.ModelChoiceField(
queryset=VLAN.objects.all(),
@@ -2823,6 +2875,10 @@ class InterfaceBulkDisconnectForm(ConfirmationForm):
# Front pass-through ports
#
class FrontPortFilterForm(DeviceComponentFilterForm):
model = FrontPort
class FrontPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False
@@ -2996,6 +3052,10 @@ class FrontPortBulkDisconnectForm(ConfirmationForm):
# Rear pass-through ports
#
class RearPortFilterForm(DeviceComponentFilterForm):
model = RearPort
class RearPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False
@@ -3572,6 +3632,10 @@ class CableFilterForm(BootstrapMixin, forms.Form):
# Device bays
#
class DeviceBayFilterForm(DeviceComponentFilterForm):
model = DeviceBay
class DeviceBayForm(BootstrapMixin, forms.ModelForm):
tags = TagField(
required=False