From 9421ec040c62f79ddb63579ce01326c7e5c8308e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 13 Jul 2016 13:07:02 -0400 Subject: [PATCH] Fixes #271: Add rack group filter for devices --- netbox/dcim/filters.py | 5 +++++ netbox/dcim/forms.py | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 9712899a8..8872e5747 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -122,6 +122,11 @@ class DeviceFilter(django_filters.FilterSet): to_field_name='slug', label='Site name (slug)', ) + rack_group_id = django_filters.ModelMultipleChoiceFilter( + name='rack__group', + queryset=RackGroup.objects.all(), + label='Rack group (ID)', + ) rack_id = django_filters.ModelMultipleChoiceFilter( name='rack', queryset=Rack.objects.all(), diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 9e91fc113..e3db78ec4 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -502,9 +502,9 @@ def device_site_choices(): return [(s.slug, '{} ({})'.format(s.name, s.device_count)) for s in site_choices] -def rack_group_choices(): - group_choices = RackGroup.objects.select_related('site').annotate(rack_count=Count('racks')) - return [(g.pk, '{} ({})'.format(g, g.rack_count)) for g in group_choices] +def device_rack_group_choices(): + group_choices = RackGroup.objects.select_related('site').annotate(device_count=Count('racks__devices')) + return [(g.pk, '{} ({})'.format(g, g.device_count)) for g in group_choices] def device_role_choices(): @@ -525,8 +525,8 @@ def device_platform_choices(): class DeviceFilterForm(forms.Form, BootstrapMixin): site = forms.MultipleChoiceField(required=False, choices=device_site_choices, widget=forms.SelectMultiple(attrs={'size': 8})) - group_id = forms.MultipleChoiceField(required=False, choices=rack_group_choices, label='Rack Group', - widget=forms.SelectMultiple(attrs={'size': 8})) + rack_group_id = forms.MultipleChoiceField(required=False, choices=device_rack_group_choices, label='Rack Group', + widget=forms.SelectMultiple(attrs={'size': 8})) role = forms.MultipleChoiceField(required=False, choices=device_role_choices, widget=forms.SelectMultiple(attrs={'size': 8})) device_type_id = forms.MultipleChoiceField(required=False, choices=device_type_choices, label='Type',