mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-07 08:08:15 -06:00
Add rack and rack group
This commit is contained in:
parent
c628521b6a
commit
088b0a4ccd
@ -586,15 +586,20 @@ class InterfaceListFilter(django_filters.FilterSet):
|
||||
method='filter_site',
|
||||
label='Site (slug)',
|
||||
)
|
||||
#role_id = django_filters.ModelMultipleChoiceFilter(
|
||||
# method='_filter_role',
|
||||
# name='device_role',
|
||||
# label='Role (ID)',
|
||||
#)
|
||||
role = django_filters.CharFilter(
|
||||
method='filter_role',
|
||||
label='Role (slug)',
|
||||
)
|
||||
rack_group_id = django_filters.ModelMultipleChoiceFilter(
|
||||
name='rack__group',
|
||||
method='filter_rack_group',
|
||||
label='Rack group (ID)',
|
||||
)
|
||||
rack_id = NullableModelMultipleChoiceFilter(
|
||||
name='rack',
|
||||
method='filter_rack',
|
||||
label='Rack (ID)',
|
||||
)
|
||||
type = django_filters.CharFilter(
|
||||
method='filter_type',
|
||||
label='Interface type',
|
||||
@ -618,6 +623,16 @@ class InterfaceListFilter(django_filters.FilterSet):
|
||||
return queryset
|
||||
return queryset.filter(device__device_role__slug=value)
|
||||
|
||||
def filter_rack(self, queryset, name, value):
|
||||
if not value.strip():
|
||||
return queryset
|
||||
return queryset.filter(device__rack=value)
|
||||
|
||||
def filter_rack_group(self, queryset, name, value):
|
||||
if not value.strip():
|
||||
return queryset
|
||||
return queryset.filter(device__rack__group=value)
|
||||
|
||||
def filter_type(self, queryset, name, value):
|
||||
value = value.strip().lower()
|
||||
return {
|
||||
|
@ -1620,6 +1620,15 @@ class InterfaceFilterForm(BootstrapMixin, forms.Form):
|
||||
class InterfaceListFilterForm(BootstrapMixin, forms.Form):
|
||||
q = forms.CharField(required=False, label='Search')
|
||||
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug')
|
||||
rack_group_id = FilterChoiceField(
|
||||
queryset=RackGroup.objects.select_related('site').annotate(filter_count=Count('racks__devices')),
|
||||
label='Rack group',
|
||||
)
|
||||
rack_id = FilterChoiceField(
|
||||
queryset=Rack.objects.annotate(filter_count=Count('devices')),
|
||||
label='Rack',
|
||||
null_option=(0, 'None'),
|
||||
)
|
||||
enabled = forms.ChoiceField(choices=add_blank_choice(IFACE_ENABLED_CHOICES), required=False)
|
||||
role = FilterChoiceField(
|
||||
required=False,
|
||||
|
Loading…
Reference in New Issue
Block a user