From 6f686283771d104db91c8b6d44dcb88c46a0489b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 26 Jul 2016 17:10:11 -0400 Subject: [PATCH] Added tenant to circuit bulk editing; enabled filtering of circuits by tenant --- netbox/circuits/filters.py | 12 ++++++++++++ netbox/circuits/forms.py | 8 ++++++++ netbox/circuits/views.py | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/netbox/circuits/filters.py b/netbox/circuits/filters.py index fc6628e87..59ff6ca4c 100644 --- a/netbox/circuits/filters.py +++ b/netbox/circuits/filters.py @@ -3,6 +3,7 @@ import django_filters from django.db.models import Q from dcim.models import Site +from tenancy.models import Tenant from .models import Provider, Circuit, CircuitType @@ -62,6 +63,17 @@ class CircuitFilter(django_filters.FilterSet): to_field_name='slug', label='Circuit type (slug)', ) + tenant_id = django_filters.ModelMultipleChoiceFilter( + name='tenant', + queryset=Tenant.objects.all(), + label='Tenant (ID)', + ) + tenant = django_filters.ModelMultipleChoiceFilter( + name='tenant', + queryset=Tenant.objects.all(), + to_field_name='slug', + label='Tenant (slug)', + ) site_id = django_filters.ModelMultipleChoiceFilter( name='site', queryset=Site.objects.all(), diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index f246bf130..d5535ef53 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -180,6 +180,7 @@ class CircuitBulkEditForm(forms.Form, BootstrapMixin): pk = forms.ModelMultipleChoiceField(queryset=Circuit.objects.all(), widget=forms.MultipleHiddenInput) type = forms.ModelChoiceField(queryset=CircuitType.objects.all(), required=False) provider = forms.ModelChoiceField(queryset=Provider.objects.all(), required=False) + tenant = forms.ModelChoiceField(queryset=Tenant.objects.all(), required=False) port_speed = forms.IntegerField(required=False, label='Port speed (Kbps)') commit_rate = forms.IntegerField(required=False, label='Commit rate (Kbps)') comments = CommentField() @@ -195,6 +196,11 @@ def circuit_provider_choices(): return [(p.slug, u'{} ({})'.format(p.name, p.circuit_count)) for p in provider_choices] +def circuit_tenant_choices(): + tenant_choices = Tenant.objects.annotate(circuit_count=Count('circuits')) + return [(t.slug, u'{} ({})'.format(t.name, t.circuit_count)) for t in tenant_choices] + + def circuit_site_choices(): site_choices = Site.objects.annotate(circuit_count=Count('circuits')) return [(s.slug, u'{} ({})'.format(s.name, s.circuit_count)) for s in site_choices] @@ -204,5 +210,7 @@ class CircuitFilterForm(forms.Form, BootstrapMixin): type = forms.MultipleChoiceField(required=False, choices=circuit_type_choices) provider = forms.MultipleChoiceField(required=False, choices=circuit_provider_choices, widget=forms.SelectMultiple(attrs={'size': 8})) + tenant = forms.MultipleChoiceField(required=False, choices=circuit_tenant_choices, + widget=forms.SelectMultiple(attrs={'size': 8})) site = forms.MultipleChoiceField(required=False, choices=circuit_site_choices, widget=forms.SelectMultiple(attrs={'size': 8})) diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index db42a6db9..3076a9141 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -159,7 +159,7 @@ class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView): def update_objects(self, pk_list, form): fields_to_update = {} - for field in ['type', 'provider', 'port_speed', 'commit_rate', 'comments']: + for field in ['type', 'provider', 'tenant', 'port_speed', 'commit_rate', 'comments']: if form.cleaned_data[field]: fields_to_update[field] = form.cleaned_data[field]