Skip to content

Commit 9cbda4d

Browse files
committed
Fix owner filter
1 parent 59082d0 commit 9cbda4d

File tree

5 files changed

+108
-29
lines changed

5 files changed

+108
-29
lines changed

netbox/dcim/forms/filtersets.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@
1212
NestedGroupModelFilterSetForm, NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm,
1313
PrimaryModelFilterSetForm,
1414
)
15-
from netbox.forms.mixins import OwnerMixin
1615
from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
17-
from users.models import User
16+
from users.models import Owner, User
1817
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
19-
from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField
18+
from utilities.forms.fields import ColorField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField
2019
from utilities.forms.rendering import FieldSet
2120
from utilities.forms.widgets import NumberWithOptions
2221
from virtualization.models import Cluster, ClusterGroup, VirtualMachine
@@ -64,7 +63,7 @@
6463
)
6564

6665

67-
class DeviceComponentFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
66+
class DeviceComponentFilterForm(NetBoxModelFilterSetForm):
6867
name = forms.CharField(
6968
label=_('Name'),
7069
required=False
@@ -141,6 +140,11 @@ class DeviceComponentFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
141140
required=False,
142141
label=_('Device Status'),
143142
)
143+
owner_id = DynamicModelChoiceField(
144+
queryset=Owner.objects.all(),
145+
required=False,
146+
label=_('Owner'),
147+
)
144148

145149

146150
class RegionFilterForm(ContactModelFilterForm, NestedGroupModelFilterSetForm):

netbox/extras/forms/filtersets.py

Lines changed: 64 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
from extras.models import *
88
from netbox.events import get_event_type_choices
99
from netbox.forms import NetBoxModelFilterSetForm, PrimaryModelFilterSetForm
10-
from netbox.forms.mixins import OwnerMixin, SavedFiltersMixin
10+
from netbox.forms.mixins import SavedFiltersMixin
1111
from tenancy.models import Tenant, TenantGroup
12-
from users.models import Group, User
12+
from users.models import Group, Owner, User
1313
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
1414
from utilities.forms.fields import (
15-
ContentTypeChoiceField, ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, TagFilterField,
15+
ContentTypeChoiceField, ContentTypeMultipleChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField,
16+
TagFilterField,
1617
)
1718
from utilities.forms.rendering import FieldSet
1819
from utilities.forms.widgets import DateTimePicker
@@ -38,7 +39,7 @@
3839
)
3940

4041

41-
class CustomFieldFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
42+
class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
4243
model = CustomField
4344
fieldsets = (
4445
FieldSet('q', 'filter_id'),
@@ -115,9 +116,14 @@ class CustomFieldFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
115116
label=_('Validation regex'),
116117
required=False
117118
)
119+
owner_id = DynamicModelChoiceField(
120+
queryset=Owner.objects.all(),
121+
required=False,
122+
label=_('Owner'),
123+
)
118124

119125

120-
class CustomFieldChoiceSetFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
126+
class CustomFieldChoiceSetFilterForm(SavedFiltersMixin, FilterForm):
121127
model = CustomFieldChoiceSet
122128
fieldsets = (
123129
FieldSet('q', 'filter_id'),
@@ -130,9 +136,14 @@ class CustomFieldChoiceSetFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
130136
choice = forms.CharField(
131137
required=False
132138
)
139+
owner_id = DynamicModelChoiceField(
140+
queryset=Owner.objects.all(),
141+
required=False,
142+
label=_('Owner'),
143+
)
133144

134145

135-
class CustomLinkFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
146+
class CustomLinkFilterForm(SavedFiltersMixin, FilterForm):
136147
model = CustomLink
137148
fieldsets = (
138149
FieldSet('q', 'filter_id'),
@@ -161,9 +172,14 @@ class CustomLinkFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
161172
label=_('Weight'),
162173
required=False
163174
)
175+
owner_id = DynamicModelChoiceField(
176+
queryset=Owner.objects.all(),
177+
required=False,
178+
label=_('Owner'),
179+
)
164180

165181

166-
class ExportTemplateFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
182+
class ExportTemplateFilterForm(SavedFiltersMixin, FilterForm):
167183
model = ExportTemplate
168184
fieldsets = (
169185
FieldSet('q', 'filter_id', 'object_type_id'),
@@ -207,6 +223,11 @@ class ExportTemplateFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
207223
choices=BOOLEAN_WITH_BLANK_CHOICES
208224
)
209225
)
226+
owner_id = DynamicModelChoiceField(
227+
queryset=Owner.objects.all(),
228+
required=False,
229+
label=_('Owner'),
230+
)
210231

211232

212233
class ImageAttachmentFilterForm(SavedFiltersMixin, FilterForm):
@@ -226,7 +247,7 @@ class ImageAttachmentFilterForm(SavedFiltersMixin, FilterForm):
226247
)
227248

228249

229-
class SavedFilterFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
250+
class SavedFilterFilterForm(SavedFiltersMixin, FilterForm):
230251
model = SavedFilter
231252
fieldsets = (
232253
FieldSet('q', 'filter_id'),
@@ -255,6 +276,11 @@ class SavedFilterFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
255276
label=_('Weight'),
256277
required=False
257278
)
279+
owner_id = DynamicModelChoiceField(
280+
queryset=Owner.objects.all(),
281+
required=False,
282+
label=_('Owner'),
283+
)
258284

259285

260286
class TableConfigFilterForm(SavedFiltersMixin, FilterForm):
@@ -287,7 +313,7 @@ class TableConfigFilterForm(SavedFiltersMixin, FilterForm):
287313
)
288314

289315

290-
class WebhookFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
316+
class WebhookFilterForm(NetBoxModelFilterSetForm):
291317
model = Webhook
292318
fieldsets = (
293319
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@@ -306,10 +332,15 @@ class WebhookFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
306332
required=False,
307333
label=_('HTTP method')
308334
)
335+
owner_id = DynamicModelChoiceField(
336+
queryset=Owner.objects.all(),
337+
required=False,
338+
label=_('Owner'),
339+
)
309340
tag = TagFilterField(model)
310341

311342

312-
class EventRuleFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
343+
class EventRuleFilterForm(NetBoxModelFilterSetForm):
313344
model = EventRule
314345
fieldsets = (
315346
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@@ -337,10 +368,15 @@ class EventRuleFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
337368
choices=BOOLEAN_WITH_BLANK_CHOICES
338369
)
339370
)
371+
owner_id = DynamicModelChoiceField(
372+
queryset=Owner.objects.all(),
373+
required=False,
374+
label=_('Owner'),
375+
)
340376
tag = TagFilterField(model)
341377

342378

343-
class TagFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
379+
class TagFilterForm(SavedFiltersMixin, FilterForm):
344380
model = Tag
345381
content_type_id = ContentTypeMultipleChoiceField(
346382
queryset=ObjectType.objects.with_feature('tags'),
@@ -352,6 +388,11 @@ class TagFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
352388
required=False,
353389
label=_('Allowed object type')
354390
)
391+
owner_id = DynamicModelChoiceField(
392+
queryset=Owner.objects.all(),
393+
required=False,
394+
label=_('Owner'),
395+
)
355396

356397

357398
class ConfigContextProfileFilterForm(PrimaryModelFilterSetForm):
@@ -375,7 +416,7 @@ class ConfigContextProfileFilterForm(PrimaryModelFilterSetForm):
375416
)
376417

377418

378-
class ConfigContextFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
419+
class ConfigContextFilterForm(SavedFiltersMixin, FilterForm):
379420
model = ConfigContext
380421
fieldsets = (
381422
FieldSet('q', 'filter_id', 'tag_id'),
@@ -469,9 +510,14 @@ class ConfigContextFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
469510
required=False,
470511
label=_('Tags')
471512
)
513+
owner_id = DynamicModelChoiceField(
514+
queryset=Owner.objects.all(),
515+
required=False,
516+
label=_('Owner'),
517+
)
472518

473519

474-
class ConfigTemplateFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
520+
class ConfigTemplateFilterForm(SavedFiltersMixin, FilterForm):
475521
model = ConfigTemplate
476522
fieldsets = (
477523
FieldSet('q', 'filter_id', 'tag'),
@@ -511,6 +557,11 @@ class ConfigTemplateFilterForm(SavedFiltersMixin, OwnerMixin, FilterForm):
511557
choices=BOOLEAN_WITH_BLANK_CHOICES
512558
)
513559
)
560+
owner_id = DynamicModelChoiceField(
561+
queryset=Owner.objects.all(),
562+
required=False,
563+
label=_('Owner'),
564+
)
514565

515566

516567
class LocalConfigContextFilterForm(forms.Form):

netbox/netbox/forms/filtersets.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
from django.utils.translation import gettext_lazy as _
44

55
from extras.choices import *
6-
from .mixins import CustomFieldsMixin, OwnerMixin, SavedFiltersMixin
6+
from users.models import Owner
7+
from utilities.forms.fields import DynamicModelChoiceField
8+
from .mixins import CustomFieldsMixin, SavedFiltersMixin
79

810
__all__ = (
911
'NestedGroupModelFilterSetForm',
@@ -42,22 +44,34 @@ def _get_form_field(self, customfield):
4244
return customfield.to_form_field(set_initial=False, enforce_required=False, enforce_visibility=False)
4345

4446

45-
class PrimaryModelFilterSetForm(OwnerMixin, NetBoxModelFilterSetForm):
47+
class PrimaryModelFilterSetForm(NetBoxModelFilterSetForm):
4648
"""
4749
FilterSet form for models which inherit from PrimaryModel.
4850
"""
49-
pass
51+
owner_id = DynamicModelChoiceField(
52+
queryset=Owner.objects.all(),
53+
required=False,
54+
label=_('Owner'),
55+
)
5056

5157

52-
class OrganizationalModelFilterSetForm(OwnerMixin, NetBoxModelFilterSetForm):
58+
class OrganizationalModelFilterSetForm(NetBoxModelFilterSetForm):
5359
"""
5460
FilterSet form for models which inherit from OrganizationalModel.
5561
"""
56-
pass
62+
owner_id = DynamicModelChoiceField(
63+
queryset=Owner.objects.all(),
64+
required=False,
65+
label=_('Owner'),
66+
)
5767

5868

59-
class NestedGroupModelFilterSetForm(OwnerMixin, NetBoxModelFilterSetForm):
69+
class NestedGroupModelFilterSetForm(NetBoxModelFilterSetForm):
6070
"""
6171
FilterSet form for models which inherit from NestedGroupModel.
6272
"""
63-
pass
73+
owner_id = DynamicModelChoiceField(
74+
queryset=Owner.objects.all(),
75+
required=False,
76+
label=_('Owner'),
77+
)

netbox/netbox/forms/mixins.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class OwnerMixin(forms.Form):
126126
"""
127127
Add an `owner` field to forms for models which support Owner assignment.
128128
"""
129-
owner_id = DynamicModelChoiceField(
129+
owner = DynamicModelChoiceField(
130130
queryset=Owner.objects.all(),
131131
required=False,
132132
label=_('Owner'),

netbox/virtualization/forms/filtersets.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
from extras.models import ConfigTemplate
88
from ipam.models import VRF, VLANTranslationPolicy
99
from netbox.forms import NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm, PrimaryModelFilterSetForm
10-
from netbox.forms.mixins import OwnerMixin
1110
from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
11+
from users.models import Owner
1212
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES
13-
from utilities.forms.fields import DynamicModelMultipleChoiceField, TagFilterField
13+
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField
1414
from utilities.forms.rendering import FieldSet
1515
from virtualization.choices import *
1616
from virtualization.models import *
@@ -200,7 +200,7 @@ class VirtualMachineFilterForm(
200200
tag = TagFilterField(model)
201201

202202

203-
class VMInterfaceFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
203+
class VMInterfaceFilterForm(NetBoxModelFilterSetForm):
204204
model = VMInterface
205205
fieldsets = (
206206
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@@ -254,10 +254,15 @@ class VMInterfaceFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
254254
required=False,
255255
label=_('VLAN Translation Policy')
256256
)
257+
owner_id = DynamicModelChoiceField(
258+
queryset=Owner.objects.all(),
259+
required=False,
260+
label=_('Owner'),
261+
)
257262
tag = TagFilterField(model)
258263

259264

260-
class VirtualDiskFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
265+
class VirtualDiskFilterForm(NetBoxModelFilterSetForm):
261266
model = VirtualDisk
262267
fieldsets = (
263268
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@@ -274,4 +279,9 @@ class VirtualDiskFilterForm(OwnerMixin, NetBoxModelFilterSetForm):
274279
required=False,
275280
min_value=1
276281
)
282+
owner_id = DynamicModelChoiceField(
283+
queryset=Owner.objects.all(),
284+
required=False,
285+
label=_('Owner'),
286+
)
277287
tag = TagFilterField(model)

0 commit comments

Comments
 (0)