Skip to content

Commit f2640f9

Browse files
committed
Closes #14631: Ensure description filters are available on all relevant models
1 parent fedcbaf commit f2640f9

File tree

8 files changed

+65
-34
lines changed

8 files changed

+65
-34
lines changed

netbox/circuits/filtersets.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,14 @@ class ProviderFilterSet(NetBoxModelFilterSet, ContactModelFilterSet):
6767

6868
class Meta:
6969
model = Provider
70-
fields = ['id', 'name', 'slug']
70+
fields = ['id', 'name', 'slug', 'description']
7171

7272
def search(self, queryset, name, value):
7373
if not value.strip():
7474
return queryset
7575
return queryset.filter(
7676
Q(name__icontains=value) |
77+
Q(description__icontains=value) |
7778
Q(accounts__account__icontains=value) |
7879
Q(accounts__name__icontains=value) |
7980
Q(comments__icontains=value)
@@ -101,6 +102,7 @@ def search(self, queryset, name, value):
101102
return queryset
102103
return queryset.filter(
103104
Q(name__icontains=value) |
105+
Q(description__icontains=value) |
104106
Q(account__icontains=value) |
105107
Q(comments__icontains=value)
106108
).distinct()

netbox/core/filtersets.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class DataSourceFilterSet(NetBoxModelFilterSet):
2626

2727
class Meta:
2828
model = DataSource
29-
fields = ('id', 'name', 'enabled')
29+
fields = ('id', 'name', 'enabled', 'description')
3030

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

netbox/dcim/filtersets.py

+46-24
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ class Meta:
325325
model = Rack
326326
fields = [
327327
'id', 'name', 'facility_id', 'asset_tag', 'u_height', 'starting_unit', 'desc_units', 'outer_width',
328-
'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit'
328+
'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit', 'description',
329329
]
330330

331331
def search(self, queryset, name, value):
@@ -336,6 +336,7 @@ def search(self, queryset, name, value):
336336
Q(facility_id__icontains=value) |
337337
Q(serial__icontains=value.strip()) |
338338
Q(asset_tag__icontains=value.strip()) |
339+
Q(description__icontains=value) |
339340
Q(comments__icontains=value)
340341
)
341342

@@ -497,7 +498,8 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet):
497498
class Meta:
498499
model = DeviceType
499500
fields = [
500-
'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit',
501+
'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'weight',
502+
'weight_unit', 'description',
501503
]
502504

503505
def search(self, queryset, name, value):
@@ -507,6 +509,7 @@ def search(self, queryset, name, value):
507509
Q(manufacturer__name__icontains=value) |
508510
Q(model__icontains=value) |
509511
Q(part_number__icontains=value) |
512+
Q(description__icontains=value) |
510513
Q(comments__icontains=value)
511514
)
512515

@@ -591,7 +594,7 @@ class ModuleTypeFilterSet(NetBoxModelFilterSet):
591594

592595
class Meta:
593596
model = ModuleType
594-
fields = ['id', 'model', 'part_number', 'weight', 'weight_unit']
597+
fields = ['id', 'model', 'part_number', 'weight', 'weight_unit', 'description']
595598

596599
def search(self, queryset, name, value):
597600
if not value.strip():
@@ -600,6 +603,7 @@ def search(self, queryset, name, value):
600603
Q(manufacturer__name__icontains=value) |
601604
Q(model__icontains=value) |
602605
Q(part_number__icontains=value) |
606+
Q(description__icontains=value) |
603607
Q(comments__icontains=value)
604608
)
605609

@@ -639,7 +643,10 @@ class DeviceTypeComponentFilterSet(django_filters.FilterSet):
639643
def search(self, queryset, name, value):
640644
if not value.strip():
641645
return queryset
642-
return queryset.filter(name__icontains=value)
646+
return queryset.filter(
647+
Q(name__icontains=value) |
648+
Q(description__icontains=value)
649+
)
643650

644651

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

655662
class Meta:
656663
model = ConsolePortTemplate
657-
fields = ['id', 'name', 'type']
664+
fields = ['id', 'name', 'type', 'description']
658665

659666

660667
class ConsoleServerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
661668

662669
class Meta:
663670
model = ConsoleServerPortTemplate
664-
fields = ['id', 'name', 'type']
671+
fields = ['id', 'name', 'type', 'description']
665672

666673

667674
class PowerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
668675

669676
class Meta:
670677
model = PowerPortTemplate
671-
fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw']
678+
fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw', 'description']
672679

673680

674681
class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
@@ -679,7 +686,7 @@ class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceType
679686

680687
class Meta:
681688
model = PowerOutletTemplate
682-
fields = ['id', 'name', 'type', 'feed_leg']
689+
fields = ['id', 'name', 'type', 'feed_leg', 'description']
683690

684691

685692
class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
@@ -703,7 +710,7 @@ class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo
703710

704711
class Meta:
705712
model = InterfaceTemplate
706-
fields = ['id', 'name', 'type', 'enabled', 'mgmt_only']
713+
fields = ['id', 'name', 'type', 'enabled', 'mgmt_only', 'description']
707714

708715

709716
class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
@@ -714,7 +721,7 @@ class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo
714721

715722
class Meta:
716723
model = FrontPortTemplate
717-
fields = ['id', 'name', 'type', 'color']
724+
fields = ['id', 'name', 'type', 'color', 'description']
718725

719726

720727
class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet):
@@ -725,21 +732,21 @@ class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCom
725732

726733
class Meta:
727734
model = RearPortTemplate
728-
fields = ['id', 'name', 'type', 'color', 'positions']
735+
fields = ['id', 'name', 'type', 'color', 'positions', 'description']
729736

730737

731738
class ModuleBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):
732739

733740
class Meta:
734741
model = ModuleBayTemplate
735-
fields = ['id', 'name']
742+
fields = ['id', 'name', 'description']
736743

737744

738745
class DeviceBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):
739746

740747
class Meta:
741748
model = DeviceBayTemplate
742-
fields = ['id', 'name']
749+
fields = ['id', 'name', 'description']
743750

744751

745752
class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet):
@@ -772,7 +779,7 @@ class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeCompo
772779

773780
class Meta:
774781
model = InventoryItemTemplate
775-
fields = ['id', 'name', 'label', 'part_id']
782+
fields = ['id', 'name', 'label', 'part_id', 'description']
776783

777784
def search(self, queryset, name, value):
778785
if not value.strip():
@@ -1008,7 +1015,10 @@ class DeviceFilterSet(
10081015

10091016
class Meta:
10101017
model = Device
1011-
fields = ['id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority']
1018+
fields = [
1019+
'id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority',
1020+
'description',
1021+
]
10121022

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

10891099
class Meta:
10901100
model = VirtualDeviceContext
1091-
fields = ['id', 'device', 'name']
1101+
fields = ['id', 'device', 'name', 'description']
10921102

10931103
def search(self, queryset, name, value):
10941104
if not value.strip():
10951105
return queryset
10961106

1097-
qs_filter = Q(name__icontains=value)
1107+
qs_filter = (
1108+
Q(name__icontains=value) |
1109+
Q(description__icontains=value)
1110+
)
10981111
try:
10991112
qs_filter |= Q(identifier=int(value))
11001113
except ValueError:
@@ -1151,7 +1164,7 @@ class ModuleFilterSet(NetBoxModelFilterSet):
11511164

11521165
class Meta:
11531166
model = Module
1154-
fields = ['id', 'status', 'asset_tag']
1167+
fields = ['id', 'status', 'asset_tag', 'description']
11551168

11561169
def search(self, queryset, name, value):
11571170
if not value.strip():
@@ -1160,6 +1173,7 @@ def search(self, queryset, name, value):
11601173
Q(device__name__icontains=value.strip()) |
11611174
Q(serial__icontains=value.strip()) |
11621175
Q(asset_tag__icontains=value.strip()) |
1176+
Q(description__icontains=value) |
11631177
Q(comments__icontains=value)
11641178
).distinct()
11651179

@@ -1650,7 +1664,7 @@ class InventoryItemRoleFilterSet(OrganizationalModelFilterSet):
16501664

16511665
class Meta:
16521666
model = InventoryItemRole
1653-
fields = ['id', 'name', 'slug', 'color']
1667+
fields = ['id', 'name', 'slug', 'color', 'description']
16541668

16551669

16561670
class VirtualChassisFilterSet(NetBoxModelFilterSet):
@@ -1715,13 +1729,14 @@ class VirtualChassisFilterSet(NetBoxModelFilterSet):
17151729

17161730
class Meta:
17171731
model = VirtualChassis
1718-
fields = ['id', 'domain', 'name']
1732+
fields = ['id', 'domain', 'name', 'description']
17191733

17201734
def search(self, queryset, name, value):
17211735
if not value.strip():
17221736
return queryset
17231737
qs_filter = (
17241738
Q(name__icontains=value) |
1739+
Q(description__icontains=value) |
17251740
Q(members__name__icontains=value) |
17261741
Q(domain__icontains=value)
17271742
)
@@ -1790,12 +1805,16 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
17901805

17911806
class Meta:
17921807
model = Cable
1793-
fields = ['id', 'label', 'length', 'length_unit']
1808+
fields = ['id', 'label', 'length', 'length_unit', 'description']
17941809

17951810
def search(self, queryset, name, value):
17961811
if not value.strip():
17971812
return queryset
1798-
return queryset.filter(label__icontains=value)
1813+
qs_filter = (
1814+
Q(label__icontains=value) |
1815+
Q(description__icontains=value)
1816+
)
1817+
return queryset.filter(qs_filter)
17991818

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

18831902
class Meta:
18841903
model = PowerPanel
1885-
fields = ['id', 'name']
1904+
fields = ['id', 'name', 'description']
18861905

18871906
def search(self, queryset, name, value):
18881907
if not value.strip():
18891908
return queryset
18901909
qs_filter = (
1891-
Q(name__icontains=value)
1910+
Q(name__icontains=value) |
1911+
Q(description__icontains=value)
18921912
)
18931913
return queryset.filter(qs_filter)
18941914

@@ -1949,13 +1969,15 @@ class Meta:
19491969
model = PowerFeed
19501970
fields = [
19511971
'id', 'name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization', 'cable_end',
1972+
'description',
19521973
]
19531974

19541975
def search(self, queryset, name, value):
19551976
if not value.strip():
19561977
return queryset
19571978
qs_filter = (
19581979
Q(name__icontains=value) |
1980+
Q(description__icontains=value) |
19591981
Q(power_panel__name__icontains=value) |
19601982
Q(comments__icontains=value)
19611983
)

netbox/extras/filtersets.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ class ConfigContextFilterSet(ChangeLoggedModelFilterSet):
512512

513513
class Meta:
514514
model = ConfigContext
515-
fields = ['id', 'name', 'is_active', 'data_synced']
515+
fields = ['id', 'name', 'is_active', 'data_synced', 'description']
516516

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

netbox/ipam/filtersets.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ class FHRPGroupFilterSet(NetBoxModelFilterSet):
759759

760760
class Meta:
761761
model = FHRPGroup
762-
fields = ['id', 'group_id', 'name', 'auth_key']
762+
fields = ['id', 'group_id', 'name', 'auth_key', 'description']
763763

764764
def search(self, queryset, name, value):
765765
if not value.strip():
@@ -1009,12 +1009,15 @@ class ServiceTemplateFilterSet(NetBoxModelFilterSet):
10091009

10101010
class Meta:
10111011
model = ServiceTemplate
1012-
fields = ['id', 'name', 'protocol']
1012+
fields = ['id', 'name', 'protocol', 'description']
10131013

10141014
def search(self, queryset, name, value):
10151015
if not value.strip():
10161016
return queryset
1017-
qs_filter = Q(name__icontains=value) | Q(description__icontains=value)
1017+
qs_filter = (
1018+
Q(name__icontains=value) |
1019+
Q(description__icontains=value)
1020+
)
10181021
return queryset.filter(qs_filter)
10191022

10201023

netbox/netbox/filtersets.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -315,5 +315,6 @@ def search(self, queryset, name, value):
315315
return queryset
316316
return queryset.filter(
317317
models.Q(name__icontains=value) |
318-
models.Q(slug__icontains=value)
318+
models.Q(slug__icontains=value) |
319+
models.Q(description__icontains=value)
319320
)

netbox/tenancy/filtersets.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class ContactFilterSet(NetBoxModelFilterSet):
6565

6666
class Meta:
6767
model = Contact
68-
fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link']
68+
fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link', 'description']
6969

7070
def search(self, queryset, name, value):
7171
if not value.strip():
@@ -77,6 +77,7 @@ def search(self, queryset, name, value):
7777
Q(email__icontains=value) |
7878
Q(address__icontains=value) |
7979
Q(link__icontains=value) |
80+
Q(description__icontains=value) |
8081
Q(comments__icontains=value)
8182
)
8283

0 commit comments

Comments
 (0)