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',
|
method='filter_site',
|
||||||
label='Site (slug)',
|
label='Site (slug)',
|
||||||
)
|
)
|
||||||
#role_id = django_filters.ModelMultipleChoiceFilter(
|
|
||||||
# method='_filter_role',
|
|
||||||
# name='device_role',
|
|
||||||
# label='Role (ID)',
|
|
||||||
#)
|
|
||||||
role = django_filters.CharFilter(
|
role = django_filters.CharFilter(
|
||||||
method='filter_role',
|
method='filter_role',
|
||||||
label='Role (slug)',
|
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(
|
type = django_filters.CharFilter(
|
||||||
method='filter_type',
|
method='filter_type',
|
||||||
label='Interface type',
|
label='Interface type',
|
||||||
@ -618,6 +623,16 @@ class InterfaceListFilter(django_filters.FilterSet):
|
|||||||
return queryset
|
return queryset
|
||||||
return queryset.filter(device__device_role__slug=value)
|
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):
|
def filter_type(self, queryset, name, value):
|
||||||
value = value.strip().lower()
|
value = value.strip().lower()
|
||||||
return {
|
return {
|
||||||
|
@ -1620,6 +1620,15 @@ class InterfaceFilterForm(BootstrapMixin, forms.Form):
|
|||||||
class InterfaceListFilterForm(BootstrapMixin, forms.Form):
|
class InterfaceListFilterForm(BootstrapMixin, forms.Form):
|
||||||
q = forms.CharField(required=False, label='Search')
|
q = forms.CharField(required=False, label='Search')
|
||||||
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug')
|
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)
|
enabled = forms.ChoiceField(choices=add_blank_choice(IFACE_ENABLED_CHOICES), required=False)
|
||||||
role = FilterChoiceField(
|
role = FilterChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
|
Loading…
Reference in New Issue
Block a user