mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 00:28:16 -06:00
Add device_status as filtering option (and configurable column) for InventoryItemTable
This commit is contained in:
parent
dab27695b9
commit
5a75e305b1
@ -1795,6 +1795,10 @@ class InventoryItemFilterSet(DeviceComponentFilterSet, NetBoxModelFilterSet):
|
|||||||
to_field_name='slug',
|
to_field_name='slug',
|
||||||
label=_('Role (slug)'),
|
label=_('Role (slug)'),
|
||||||
)
|
)
|
||||||
|
device_status = django_filters.MultipleChoiceFilter(
|
||||||
|
choices=DeviceStatusChoices,
|
||||||
|
field_name='device__status',
|
||||||
|
)
|
||||||
component_type = ContentTypeFilter()
|
component_type = ContentTypeFilter()
|
||||||
component_id = MultiValueNumberFilter()
|
component_id = MultiValueNumberFilter()
|
||||||
serial = MultiValueCharFilter(
|
serial = MultiValueCharFilter(
|
||||||
@ -1803,7 +1807,7 @@ class InventoryItemFilterSet(DeviceComponentFilterSet, NetBoxModelFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InventoryItem
|
model = InventoryItem
|
||||||
fields = ('id', 'name', 'label', 'part_id', 'asset_tag', 'description', 'discovered')
|
fields = ('id', 'name', 'label', 'part_id', 'asset_tag', 'description', 'discovered', 'device_status')
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -1434,7 +1434,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
|
|||||||
name=_('Attributes')
|
name=_('Attributes')
|
||||||
),
|
),
|
||||||
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
|
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
|
||||||
FieldSet('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id', name=_('Device')),
|
FieldSet('device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', name=_('Device')),
|
||||||
)
|
)
|
||||||
role_id = DynamicModelMultipleChoiceField(
|
role_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=InventoryItemRole.objects.all(),
|
queryset=InventoryItemRole.objects.all(),
|
||||||
@ -1461,6 +1461,11 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
|
|||||||
choices=BOOLEAN_WITH_BLANK_CHOICES
|
choices=BOOLEAN_WITH_BLANK_CHOICES
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
device_status = forms.MultipleChoiceField(
|
||||||
|
choices=DeviceStatusChoices,
|
||||||
|
required=False,
|
||||||
|
label=_('Device Status'),
|
||||||
|
)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1265,6 +1265,9 @@ class InventoryItem(MPTTModel, ComponentModel, TrackingModelMixin):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:inventoryitem', kwargs={'pk': self.pk})
|
return reverse('dcim:inventoryitem', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
|
def get_device_status_color(self):
|
||||||
|
return self.device.get_status_color()
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
|
@ -927,6 +927,10 @@ class InventoryItemTable(DeviceComponentTable):
|
|||||||
tags = columns.TagColumn(
|
tags = columns.TagColumn(
|
||||||
url_name='dcim:inventoryitem_list'
|
url_name='dcim:inventoryitem_list'
|
||||||
)
|
)
|
||||||
|
device_status = columns.ChoiceFieldColumn(
|
||||||
|
accessor=tables.A('device__status'),
|
||||||
|
verbose_name=_('Device Status'),
|
||||||
|
)
|
||||||
cable = None # Override DeviceComponentTable
|
cable = None # Override DeviceComponentTable
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
|
Loading…
Reference in New Issue
Block a user