mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 12:06:53 -06:00
Closes #394: Added global option to VRF selection widget during bulk editing
This commit is contained in:
parent
483ad256a8
commit
76efea87ff
@ -239,23 +239,24 @@ class PrefixImportForm(BulkImportForm, BootstrapMixin):
|
|||||||
csv = CSVDataField(csv_form=PrefixFromCSVForm)
|
csv = CSVDataField(csv_form=PrefixFromCSVForm)
|
||||||
|
|
||||||
|
|
||||||
|
def prefix_vrf_choices():
|
||||||
|
choices = [
|
||||||
|
(None, '---------'),
|
||||||
|
(0, 'Global'),
|
||||||
|
]
|
||||||
|
choices += [(v.pk, v.name) for v in VRF.objects.all()]
|
||||||
|
return choices
|
||||||
|
|
||||||
|
|
||||||
class PrefixBulkEditForm(forms.Form, BootstrapMixin):
|
class PrefixBulkEditForm(forms.Form, BootstrapMixin):
|
||||||
pk = forms.ModelMultipleChoiceField(queryset=Prefix.objects.all(), widget=forms.MultipleHiddenInput)
|
pk = forms.ModelMultipleChoiceField(queryset=Prefix.objects.all(), widget=forms.MultipleHiddenInput)
|
||||||
site = forms.ModelChoiceField(queryset=Site.objects.all(), required=False)
|
site = forms.ModelChoiceField(queryset=Site.objects.all(), required=False)
|
||||||
vrf = forms.ModelChoiceField(queryset=VRF.objects.all(), required=False, label='VRF',
|
vrf = forms.TypedChoiceField(choices=prefix_vrf_choices, coerce=int, required=False, label='VRF')
|
||||||
help_text="Select the VRF to assign, or check below to remove VRF assignment")
|
|
||||||
vrf_global = forms.BooleanField(required=False, label='Set VRF to global')
|
|
||||||
status = forms.ChoiceField(choices=FORM_PREFIX_STATUS_CHOICES, required=False)
|
status = forms.ChoiceField(choices=FORM_PREFIX_STATUS_CHOICES, required=False)
|
||||||
role = forms.ModelChoiceField(queryset=Role.objects.all(), required=False)
|
role = forms.ModelChoiceField(queryset=Role.objects.all(), required=False)
|
||||||
description = forms.CharField(max_length=100, required=False)
|
description = forms.CharField(max_length=100, required=False)
|
||||||
|
|
||||||
|
|
||||||
def prefix_vrf_choices():
|
|
||||||
vrf_choices = [('', 'All'), (0, 'Global')]
|
|
||||||
vrf_choices += [(v.pk, v.name) for v in VRF.objects.all()]
|
|
||||||
return vrf_choices
|
|
||||||
|
|
||||||
|
|
||||||
def prefix_site_choices():
|
def prefix_site_choices():
|
||||||
site_choices = Site.objects.annotate(prefix_count=Count('prefixes'))
|
site_choices = Site.objects.annotate(prefix_count=Count('prefixes'))
|
||||||
return [(s.slug, u'{} ({})'.format(s.name, s.prefix_count)) for s in site_choices]
|
return [(s.slug, u'{} ({})'.format(s.name, s.prefix_count)) for s in site_choices]
|
||||||
@ -402,11 +403,18 @@ class IPAddressImportForm(BulkImportForm, BootstrapMixin):
|
|||||||
csv = CSVDataField(csv_form=IPAddressFromCSVForm)
|
csv = CSVDataField(csv_form=IPAddressFromCSVForm)
|
||||||
|
|
||||||
|
|
||||||
|
def ipaddress_vrf_choices():
|
||||||
|
choices = [
|
||||||
|
(None, '---------'),
|
||||||
|
(0, 'Global'),
|
||||||
|
]
|
||||||
|
choices += [(v.pk, v.name) for v in VRF.objects.all()]
|
||||||
|
return choices
|
||||||
|
|
||||||
|
|
||||||
class IPAddressBulkEditForm(forms.Form, BootstrapMixin):
|
class IPAddressBulkEditForm(forms.Form, BootstrapMixin):
|
||||||
pk = forms.ModelMultipleChoiceField(queryset=IPAddress.objects.all(), widget=forms.MultipleHiddenInput)
|
pk = forms.ModelMultipleChoiceField(queryset=IPAddress.objects.all(), widget=forms.MultipleHiddenInput)
|
||||||
vrf = forms.ModelChoiceField(queryset=VRF.objects.all(), required=False, label='VRF',
|
vrf = forms.TypedChoiceField(choices=ipaddress_vrf_choices, coerce=int, required=False, label='VRF')
|
||||||
help_text="Select the VRF to assign, or check below to remove VRF assignment")
|
|
||||||
vrf_global = forms.BooleanField(required=False, label='Set VRF to global')
|
|
||||||
description = forms.CharField(max_length=100, required=False)
|
description = forms.CharField(max_length=100, required=False)
|
||||||
|
|
||||||
|
|
||||||
@ -414,12 +422,6 @@ def ipaddress_family_choices():
|
|||||||
return [('', 'All'), (4, 'IPv4'), (6, 'IPv6')]
|
return [('', 'All'), (4, 'IPv4'), (6, 'IPv6')]
|
||||||
|
|
||||||
|
|
||||||
def ipaddress_vrf_choices():
|
|
||||||
vrf_choices = [('', 'All'), (0, 'Global')]
|
|
||||||
vrf_choices += [(v.pk, v.name) for v in VRF.objects.all()]
|
|
||||||
return vrf_choices
|
|
||||||
|
|
||||||
|
|
||||||
class IPAddressFilterForm(forms.Form, BootstrapMixin):
|
class IPAddressFilterForm(forms.Form, BootstrapMixin):
|
||||||
family = forms.ChoiceField(required=False, choices=ipaddress_family_choices, label='Address Family')
|
family = forms.ChoiceField(required=False, choices=ipaddress_family_choices, label='Address Family')
|
||||||
vrf = forms.ChoiceField(required=False, choices=ipaddress_vrf_choices, label='VRF')
|
vrf = forms.ChoiceField(required=False, choices=ipaddress_vrf_choices, label='VRF')
|
||||||
|
@ -337,10 +337,10 @@ class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
|
|||||||
def update_objects(self, pk_list, form):
|
def update_objects(self, pk_list, form):
|
||||||
|
|
||||||
fields_to_update = {}
|
fields_to_update = {}
|
||||||
if form.cleaned_data['vrf']:
|
if form.cleaned_data['vrf'] == 0:
|
||||||
fields_to_update['vrf'] = form.cleaned_data['vrf']
|
|
||||||
elif form.cleaned_data['vrf_global']:
|
|
||||||
fields_to_update['vrf'] = None
|
fields_to_update['vrf'] = None
|
||||||
|
elif form.cleaned_data['vrf']:
|
||||||
|
fields_to_update['vrf'] = form.cleaned_data['vrf']
|
||||||
for field in ['site', 'status', 'role', 'description']:
|
for field in ['site', 'status', 'role', 'description']:
|
||||||
if form.cleaned_data[field]:
|
if form.cleaned_data[field]:
|
||||||
fields_to_update[field] = form.cleaned_data[field]
|
fields_to_update[field] = form.cleaned_data[field]
|
||||||
@ -461,10 +461,10 @@ class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
|
|||||||
def update_objects(self, pk_list, form):
|
def update_objects(self, pk_list, form):
|
||||||
|
|
||||||
fields_to_update = {}
|
fields_to_update = {}
|
||||||
if form.cleaned_data['vrf']:
|
if form.cleaned_data['vrf'] == 0:
|
||||||
fields_to_update['vrf'] = form.cleaned_data['vrf']
|
|
||||||
elif form.cleaned_data['vrf_global']:
|
|
||||||
fields_to_update['vrf'] = None
|
fields_to_update['vrf'] = None
|
||||||
|
elif form.cleaned_data['vrf']:
|
||||||
|
fields_to_update['vrf'] = form.cleaned_data['vrf']
|
||||||
for field in ['description']:
|
for field in ['description']:
|
||||||
if form.cleaned_data[field]:
|
if form.cleaned_data[field]:
|
||||||
fields_to_update[field] = form.cleaned_data[field]
|
fields_to_update[field] = form.cleaned_data[field]
|
||||||
|
Loading…
Reference in New Issue
Block a user