mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-17 04:32:51 -06:00
Added cable filter form
This commit is contained in:
parent
54c917beff
commit
cca44d44f7
@ -13,7 +13,7 @@ from .constants import (
|
|||||||
WIRELESS_IFACE_TYPES,
|
WIRELESS_IFACE_TYPES,
|
||||||
)
|
)
|
||||||
from .models import (
|
from .models import (
|
||||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||||
DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate,
|
DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate,
|
||||||
InventoryItem, Manufacturer, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack,
|
InventoryItem, Manufacturer, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack,
|
||||||
RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis,
|
RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis,
|
||||||
@ -785,6 +785,13 @@ class VirtualChassisFilter(django_filters.FilterSet):
|
|||||||
return queryset.filter(qs_filter)
|
return queryset.filter(qs_filter)
|
||||||
|
|
||||||
|
|
||||||
|
class CableFilter(django_filters.FilterSet):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Cable
|
||||||
|
fields = ['type', 'status', 'color']
|
||||||
|
|
||||||
|
|
||||||
class ConsoleConnectionFilter(django_filters.FilterSet):
|
class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||||
site = django_filters.CharFilter(
|
site = django_filters.CharFilter(
|
||||||
method='filter_site',
|
method='filter_site',
|
||||||
|
@ -17,10 +17,11 @@ from tenancy.forms import TenancyForm
|
|||||||
from tenancy.models import Tenant
|
from tenancy.models import Tenant
|
||||||
from utilities.forms import (
|
from utilities.forms import (
|
||||||
AnnotatedMultipleChoiceField, APISelect, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
|
AnnotatedMultipleChoiceField, APISelect, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
|
||||||
BulkEditNullBooleanSelect, ChainedFieldsMixin, ChainedModelChoiceField, CommentField, ComponentForm,
|
BulkEditNullBooleanSelect, ChainedFieldsMixin, ChainedModelChoiceField, ColorSelect, CommentField, ComponentForm,
|
||||||
ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, FilterTreeNodeMultipleChoiceField,
|
ConfirmationForm, ContentTypeSelect, CSVChoiceField, ExpandableNameField, FilterChoiceField,
|
||||||
FlexibleModelChoiceField, JSONField, Livesearch, SelectWithDisabled, SelectWithPK, SmallTextarea, SlugField,
|
FilterTreeNodeMultipleChoiceField, FlexibleModelChoiceField, JSONField, Livesearch, SelectWithPK, SmallTextarea,
|
||||||
ContentTypeSelect
|
SlugField, COLOR_CHOICES,
|
||||||
|
|
||||||
)
|
)
|
||||||
from virtualization.models import Cluster
|
from virtualization.models import Cluster
|
||||||
from .constants import *
|
from .constants import *
|
||||||
@ -2212,6 +2213,22 @@ class CableForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class CableFilterForm(BootstrapMixin, forms.Form):
|
||||||
|
model = Cable
|
||||||
|
q = forms.CharField(required=False, label='Search')
|
||||||
|
type = AnnotatedMultipleChoiceField(
|
||||||
|
choices=CABLE_TYPE_CHOICES,
|
||||||
|
annotate=Cable.objects.all(),
|
||||||
|
annotate_field='type',
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
color = forms.ChoiceField(
|
||||||
|
choices=add_blank_choice(COLOR_CHOICES),
|
||||||
|
widget=ColorSelect(),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device bays
|
# Device bays
|
||||||
#
|
#
|
||||||
|
@ -621,35 +621,39 @@ class DeviceBayTable(BaseTable):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class CableTable(BaseTable):
|
class CableTable(BaseTable):
|
||||||
|
# django-tables2 adds CSS `class="label"` which causes rendering issues
|
||||||
|
_label = tables.Column(
|
||||||
|
accessor=Accessor('label'),
|
||||||
|
verbose_name='Label'
|
||||||
|
)
|
||||||
device_a = tables.LinkColumn(
|
device_a = tables.LinkColumn(
|
||||||
viewname='dcim:device',
|
viewname='dcim:device',
|
||||||
accessor=Accessor('termination_a.device'),
|
accessor=Accessor('termination_a.device'),
|
||||||
args=[Accessor('termination_a.device.pk')],
|
args=[Accessor('termination_a.device.pk')],
|
||||||
|
orderable=False,
|
||||||
verbose_name='Device A'
|
verbose_name='Device A'
|
||||||
)
|
)
|
||||||
termination_a = tables.Column(
|
termination_a = tables.Column(
|
||||||
accessor=Accessor('termination_a.name'),
|
accessor=Accessor('termination_a.name'),
|
||||||
|
orderable=False,
|
||||||
verbose_name='Component'
|
verbose_name='Component'
|
||||||
)
|
)
|
||||||
device_b = tables.LinkColumn(
|
device_b = tables.LinkColumn(
|
||||||
viewname='dcim:device',
|
viewname='dcim:device',
|
||||||
accessor=Accessor('termination_b.device'),
|
accessor=Accessor('termination_b.device'),
|
||||||
args=[Accessor('termination_b.device.pk')],
|
args=[Accessor('termination_b.device.pk')],
|
||||||
|
orderable=False,
|
||||||
verbose_name='Device B'
|
verbose_name='Device B'
|
||||||
)
|
)
|
||||||
termination_b = tables.Column(
|
termination_b = tables.Column(
|
||||||
accessor=Accessor('termination_b.name'),
|
accessor=Accessor('termination_b.name'),
|
||||||
|
orderable=False,
|
||||||
verbose_name='Component'
|
verbose_name='Component'
|
||||||
)
|
)
|
||||||
# django-tables2 adds CSS `class="label"` which causes rendering issues
|
|
||||||
_label = tables.Column(
|
|
||||||
accessor=Accessor('label'),
|
|
||||||
verbose_name='Label'
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Cable
|
model = Cable
|
||||||
fields = ('device_a', 'termination_a', 'device_b', 'termination_b', 'status', '_label', 'color')
|
fields = ('_label', 'device_a', 'termination_a', 'device_b', 'termination_b', 'status', 'type', 'color')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -2017,8 +2017,8 @@ class CableListView(ObjectListView):
|
|||||||
queryset = Cable.objects.prefetch_related(
|
queryset = Cable.objects.prefetch_related(
|
||||||
'termination_a__device', 'termination_b__device'
|
'termination_a__device', 'termination_b__device'
|
||||||
)
|
)
|
||||||
# filter = filters.CableFilter
|
filter = filters.CableFilter
|
||||||
# filter_form = forms.CableFilterForm
|
filter_form = forms.CableFilterForm
|
||||||
table = tables.CableTable
|
table = tables.CableTable
|
||||||
template_name = 'dcim/cable_list.html'
|
template_name = 'dcim/cable_list.html'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user