Add rack and rack group

This commit is contained in:
Joseph Kennedy 2017-08-31 16:37:34 -04:00
parent c628521b6a
commit 088b0a4ccd
2 changed files with 29 additions and 5 deletions

View File

@ -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 {

View File

@ -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,