Skip to content

Commit

Permalink
Closes #14631: Ensure description filters are available on all releva…
Browse files Browse the repository at this point in the history
…nt models
  • Loading branch information
jeremystretch committed Dec 28, 2023
1 parent 45c646d commit 3bacee1
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 34 deletions.
4 changes: 3 additions & 1 deletion netbox/circuits/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,14 @@ class ProviderFilterSet(NetBoxModelFilterSet, ContactModelFilterSet):

class Meta:
model = Provider
fields = ['id', 'name', 'slug']
fields = ['id', 'name', 'slug', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(
Q(name__icontains=value) |
Q(description__icontains=value) |
Q(accounts__account__icontains=value) |
Q(accounts__name__icontains=value) |
Q(comments__icontains=value)
Expand Down Expand Up @@ -101,6 +102,7 @@ def search(self, queryset, name, value):
return queryset
return queryset.filter(
Q(name__icontains=value) |
Q(description__icontains=value) |
Q(account__icontains=value) |
Q(comments__icontains=value)
).distinct()
Expand Down
2 changes: 1 addition & 1 deletion netbox/core/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class DataSourceFilterSet(NetBoxModelFilterSet):

class Meta:
model = DataSource
fields = ('id', 'name', 'enabled')
fields = ('id', 'name', 'enabled', 'description')

def search(self, queryset, name, value):
if not value.strip():
Expand Down
70 changes: 46 additions & 24 deletions netbox/dcim/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ class Meta:
model = Rack
fields = [
'id', 'name', 'facility_id', 'asset_tag', 'u_height', 'starting_unit', 'desc_units', 'outer_width',
'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit'
'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit', 'description',
]

def search(self, queryset, name, value):
Expand All @@ -336,6 +336,7 @@ def search(self, queryset, name, value):
Q(facility_id__icontains=value) |
Q(serial__icontains=value.strip()) |
Q(asset_tag__icontains=value.strip()) |
Q(description__icontains=value) |
Q(comments__icontains=value)
)

Expand Down Expand Up @@ -497,7 +498,8 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet):
class Meta:
model = DeviceType
fields = [
'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit',
'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'weight',
'weight_unit', 'description',
]

def search(self, queryset, name, value):
Expand All @@ -507,6 +509,7 @@ def search(self, queryset, name, value):
Q(manufacturer__name__icontains=value) |
Q(model__icontains=value) |
Q(part_number__icontains=value) |
Q(description__icontains=value) |
Q(comments__icontains=value)
)

Expand Down Expand Up @@ -591,7 +594,7 @@ class ModuleTypeFilterSet(NetBoxModelFilterSet):

class Meta:
model = ModuleType
fields = ['id', 'model', 'part_number', 'weight', 'weight_unit']
fields = ['id', 'model', 'part_number', 'weight', 'weight_unit', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand All @@ -600,6 +603,7 @@ def search(self, queryset, name, value):
Q(manufacturer__name__icontains=value) |
Q(model__icontains=value) |
Q(part_number__icontains=value) |
Q(description__icontains=value) |
Q(comments__icontains=value)
)

Expand Down Expand Up @@ -639,7 +643,10 @@ class DeviceTypeComponentFilterSet(django_filters.FilterSet):
def search(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(name__icontains=value)
return queryset.filter(
Q(name__icontains=value) |
Q(description__icontains=value)
)


class ModularDeviceTypeComponentFilterSet(DeviceTypeComponentFilterSet):
Expand All @@ -654,21 +661,21 @@ class ConsolePortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceType

class Meta:
model = ConsolePortTemplate
fields = ['id', 'name', 'type']
fields = ['id', 'name', 'type', 'description']


class ConsoleServerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):

class Meta:
model = ConsoleServerPortTemplate
fields = ['id', 'name', 'type']
fields = ['id', 'name', 'type', 'description']


class PowerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):

class Meta:
model = PowerPortTemplate
fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw']
fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw', 'description']


class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
Expand All @@ -679,7 +686,7 @@ class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceType

class Meta:
model = PowerOutletTemplate
fields = ['id', 'name', 'type', 'feed_leg']
fields = ['id', 'name', 'type', 'feed_leg', 'description']


class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
Expand All @@ -703,7 +710,7 @@ class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo

class Meta:
model = InterfaceTemplate
fields = ['id', 'name', 'type', 'enabled', 'mgmt_only']
fields = ['id', 'name', 'type', 'enabled', 'mgmt_only', 'description']


class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
Expand All @@ -714,7 +721,7 @@ class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo

class Meta:
model = FrontPortTemplate
fields = ['id', 'name', 'type', 'color']
fields = ['id', 'name', 'type', 'color', 'description']


class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
Expand All @@ -725,21 +732,21 @@ class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCom

class Meta:
model = RearPortTemplate
fields = ['id', 'name', 'type', 'color', 'positions']
fields = ['id', 'name', 'type', 'color', 'positions', 'description']


class ModuleBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):

class Meta:
model = ModuleBayTemplate
fields = ['id', 'name']
fields = ['id', 'name', 'description']


class DeviceBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):

class Meta:
model = DeviceBayTemplate
fields = ['id', 'name']
fields = ['id', 'name', 'description']


class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):
Expand Down Expand Up @@ -772,7 +779,7 @@ class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeCompo

class Meta:
model = InventoryItemTemplate
fields = ['id', 'name', 'label', 'part_id']
fields = ['id', 'name', 'label', 'part_id', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand Down Expand Up @@ -1008,7 +1015,10 @@ class DeviceFilterSet(

class Meta:
model = Device
fields = ['id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority']
fields = [
'id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority',
'description',
]

def search(self, queryset, name, value):
if not value.strip():
Expand Down Expand Up @@ -1088,13 +1098,16 @@ class VirtualDeviceContextFilterSet(NetBoxModelFilterSet, TenancyFilterSet, Prim

class Meta:
model = VirtualDeviceContext
fields = ['id', 'device', 'name']
fields = ['id', 'device', 'name', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset

qs_filter = Q(name__icontains=value)
qs_filter = (
Q(name__icontains=value) |
Q(description__icontains=value)
)
try:
qs_filter |= Q(identifier=int(value))
except ValueError:
Expand Down Expand Up @@ -1151,7 +1164,7 @@ class ModuleFilterSet(NetBoxModelFilterSet):

class Meta:
model = Module
fields = ['id', 'status', 'asset_tag']
fields = ['id', 'status', 'asset_tag', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand All @@ -1160,6 +1173,7 @@ def search(self, queryset, name, value):
Q(device__name__icontains=value.strip()) |
Q(serial__icontains=value.strip()) |
Q(asset_tag__icontains=value.strip()) |
Q(description__icontains=value) |
Q(comments__icontains=value)
).distinct()

Expand Down Expand Up @@ -1650,7 +1664,7 @@ class InventoryItemRoleFilterSet(OrganizationalModelFilterSet):

class Meta:
model = InventoryItemRole
fields = ['id', 'name', 'slug', 'color']
fields = ['id', 'name', 'slug', 'color', 'description']


class VirtualChassisFilterSet(NetBoxModelFilterSet):
Expand Down Expand Up @@ -1715,13 +1729,14 @@ class VirtualChassisFilterSet(NetBoxModelFilterSet):

class Meta:
model = VirtualChassis
fields = ['id', 'domain', 'name']
fields = ['id', 'domain', 'name', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset
qs_filter = (
Q(name__icontains=value) |
Q(description__icontains=value) |
Q(members__name__icontains=value) |
Q(domain__icontains=value)
)
Expand Down Expand Up @@ -1790,12 +1805,16 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet):

class Meta:
model = Cable
fields = ['id', 'label', 'length', 'length_unit']
fields = ['id', 'label', 'length', 'length_unit', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(label__icontains=value)
qs_filter = (
Q(label__icontains=value) |
Q(description__icontains=value)
)
return queryset.filter(qs_filter)

def filter_by_termination(self, queryset, name, value):
# Filter by a related object cached on CableTermination. Note the underscore preceding the field name.
Expand Down Expand Up @@ -1882,13 +1901,14 @@ class PowerPanelFilterSet(NetBoxModelFilterSet, ContactModelFilterSet):

class Meta:
model = PowerPanel
fields = ['id', 'name']
fields = ['id', 'name', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset
qs_filter = (
Q(name__icontains=value)
Q(name__icontains=value) |
Q(description__icontains=value)
)
return queryset.filter(qs_filter)

Expand Down Expand Up @@ -1949,13 +1969,15 @@ class Meta:
model = PowerFeed
fields = [
'id', 'name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization', 'cable_end',
'description',
]

def search(self, queryset, name, value):
if not value.strip():
return queryset
qs_filter = (
Q(name__icontains=value) |
Q(description__icontains=value) |
Q(power_panel__name__icontains=value) |
Q(comments__icontains=value)
)
Expand Down
2 changes: 1 addition & 1 deletion netbox/extras/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ class ConfigContextFilterSet(ChangeLoggedModelFilterSet):

class Meta:
model = ConfigContext
fields = ['id', 'name', 'is_active', 'data_synced']
fields = ['id', 'name', 'is_active', 'data_synced', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand Down
9 changes: 6 additions & 3 deletions netbox/ipam/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ class FHRPGroupFilterSet(NetBoxModelFilterSet):

class Meta:
model = FHRPGroup
fields = ['id', 'group_id', 'name', 'auth_key']
fields = ['id', 'group_id', 'name', 'auth_key', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand Down Expand Up @@ -1009,12 +1009,15 @@ class ServiceTemplateFilterSet(NetBoxModelFilterSet):

class Meta:
model = ServiceTemplate
fields = ['id', 'name', 'protocol']
fields = ['id', 'name', 'protocol', 'description']

def search(self, queryset, name, value):
if not value.strip():
return queryset
qs_filter = Q(name__icontains=value) | Q(description__icontains=value)
qs_filter = (
Q(name__icontains=value) |
Q(description__icontains=value)
)
return queryset.filter(qs_filter)


Expand Down
3 changes: 2 additions & 1 deletion netbox/netbox/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,5 +315,6 @@ def search(self, queryset, name, value):
return queryset
return queryset.filter(
models.Q(name__icontains=value) |
models.Q(slug__icontains=value)
models.Q(slug__icontains=value) |
models.Q(description__icontains=value)
)
3 changes: 2 additions & 1 deletion netbox/tenancy/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class ContactFilterSet(NetBoxModelFilterSet):

class Meta:
model = Contact
fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link']
fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link', 'description']

def search(self, queryset, name, value):
if not value.strip():
Expand All @@ -77,6 +77,7 @@ def search(self, queryset, name, value):
Q(email__icontains=value) |
Q(address__icontains=value) |
Q(link__icontains=value) |
Q(description__icontains=value) |
Q(comments__icontains=value)
)

Expand Down
Loading

0 comments on commit 3bacee1

Please sign in to comment.