Skip to content

Commit 50f283c

Browse files
committed
Add q filter for extras models
1 parent f49d700 commit 50f283c

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

netbox/extras/filtersets.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535

3636

3737
class WebhookFilterSet(BaseFilterSet):
38+
q = django_filters.CharFilter(
39+
method='search',
40+
label='Search',
41+
)
3842
content_types = ContentTypeFilter()
3943
http_method = django_filters.MultipleChoiceFilter(
4044
choices=WebhookHttpMethodChoices
@@ -47,37 +51,93 @@ class Meta:
4751
'http_method', 'http_content_type', 'secret', 'ssl_verification', 'ca_file_path',
4852
]
4953

54+
def search(self, queryset, name, value):
55+
if not value.strip():
56+
return queryset
57+
return queryset.filter(
58+
Q(name__icontains=value) |
59+
Q(payload_url__icontains=value)
60+
)
61+
5062

5163
class CustomFieldFilterSet(BaseFilterSet):
64+
q = django_filters.CharFilter(
65+
method='search',
66+
label='Search',
67+
)
5268
content_types = ContentTypeFilter()
5369

5470
class Meta:
5571
model = CustomField
5672
fields = ['id', 'content_types', 'name', 'required', 'filter_logic', 'weight']
5773

74+
def search(self, queryset, name, value):
75+
if not value.strip():
76+
return queryset
77+
return queryset.filter(
78+
Q(name__icontains=value) |
79+
Q(label__icontains=value) |
80+
Q(description__icontains=value)
81+
)
82+
5883

5984
class CustomLinkFilterSet(BaseFilterSet):
85+
q = django_filters.CharFilter(
86+
method='search',
87+
label='Search',
88+
)
6089

6190
class Meta:
6291
model = CustomLink
6392
fields = ['id', 'content_type', 'name', 'link_text', 'link_url', 'weight', 'group_name', 'new_window']
6493

94+
def search(self, queryset, name, value):
95+
if not value.strip():
96+
return queryset
97+
return queryset.filter(
98+
Q(name__icontains=value) |
99+
Q(link_text__icontains=value) |
100+
Q(link_url__icontains=value) |
101+
Q(group_name__icontains=value)
102+
)
103+
65104

66105
class ExportTemplateFilterSet(BaseFilterSet):
106+
q = django_filters.CharFilter(
107+
method='search',
108+
label='Search',
109+
)
67110

68111
class Meta:
69112
model = ExportTemplate
70113
fields = ['id', 'content_type', 'name']
71114

115+
def search(self, queryset, name, value):
116+
if not value.strip():
117+
return queryset
118+
return queryset.filter(
119+
Q(name__icontains=value) |
120+
Q(description__icontains=value)
121+
)
122+
72123

73124
class ImageAttachmentFilterSet(BaseFilterSet):
125+
q = django_filters.CharFilter(
126+
method='search',
127+
label='Search',
128+
)
74129
created = django_filters.DateTimeFilter()
75130
content_type = ContentTypeFilter()
76131

77132
class Meta:
78133
model = ImageAttachment
79134
fields = ['id', 'content_type_id', 'object_id', 'name']
80135

136+
def search(self, queryset, name, value):
137+
if not value.strip():
138+
return queryset
139+
return queryset.filter(name__icontains=value)
140+
81141

82142
class JournalEntryFilterSet(ChangeLoggedModelFilterSet):
83143
q = django_filters.CharFilter(

0 commit comments

Comments
 (0)