From add95292cef42eea640a8e137fbd56cb9096a634 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 1 Jul 2021 10:48:24 -0400 Subject: [PATCH] Fixes #6680: Allow setting custom field values for VM interfaces on intial creation --- docs/release-notes/version-2.11.md | 1 + .../templates/dcim/device_component_add.html | 24 ++++++++++-- .../virtualmachine_component_add.html | 38 ------------------- netbox/virtualization/forms.py | 10 +++-- netbox/virtualization/views.py | 2 +- 5 files changed, 28 insertions(+), 47 deletions(-) delete mode 100644 netbox/templates/virtualization/virtualmachine_component_add.html diff --git a/docs/release-notes/version-2.11.md b/docs/release-notes/version-2.11.md index 296cf085c..6516bcd29 100644 --- a/docs/release-notes/version-2.11.md +++ b/docs/release-notes/version-2.11.md @@ -15,6 +15,7 @@ * [#6640](https://github.com/netbox-community/netbox/issues/6640) - Disallow numeric values in custom text fields * [#6652](https://github.com/netbox-community/netbox/issues/6652) - Fix exception when adding components in bulk to multiple devices * [#6676](https://github.com/netbox-community/netbox/issues/6676) - Fix device/VM counts per cluster under cluster type/group views +* [#6680](https://github.com/netbox-community/netbox/issues/6680) - Allow setting custom field values for VM interfaces on intial creation --- diff --git a/netbox/templates/dcim/device_component_add.html b/netbox/templates/dcim/device_component_add.html index 0b7200c1f..0937cc371 100644 --- a/netbox/templates/dcim/device_component_add.html +++ b/netbox/templates/dcim/device_component_add.html @@ -1,4 +1,5 @@ {% extends 'base.html' %} +{% load helpers %} {% load form_helpers %} {% block title %}Create {{ component_type }}{% endblock %} @@ -18,19 +19,34 @@ {% endif %}
- {{ component_type|title }} + {{ component_type|bettertitle }}
- {% render_form form %} + {% for field in form.hidden_fields %} + {{ field }} + {% endfor %} + {% for field in form.visible_fields %} + {% if field.name not in form.custom_fields %} + {% render_field field %} + {% endif %} + {% endfor %}
-
+ {% if form.custom_fields %} +
+
Custom Fields
+
+ {% render_custom_fields form %} +
+
+ {% endif %} +
Cancel
-
+
diff --git a/netbox/templates/virtualization/virtualmachine_component_add.html b/netbox/templates/virtualization/virtualmachine_component_add.html deleted file mode 100644 index 11b120ee0..000000000 --- a/netbox/templates/virtualization/virtualmachine_component_add.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends 'base.html' %} -{% load helpers %} -{% load form_helpers %} - -{% block title %}Create {{ component_type }}{% endblock %} - -{% block content %} -
- {% csrf_token %} -
-
- {% if form.non_field_errors %} -
-
Errors
-
- {{ form.non_field_errors }} -
-
- {% endif %} -
-
- {{ component_type|bettertitle }} -
-
- {% render_form form %} -
-
-
-
- - - Cancel -
-
-
-
-
-{% endblock %} diff --git a/netbox/virtualization/forms.py b/netbox/virtualization/forms.py index f6bbd5b0d..f7b241c1a 100644 --- a/netbox/virtualization/forms.py +++ b/netbox/virtualization/forms.py @@ -8,7 +8,8 @@ from dcim.constants import INTERFACE_MTU_MAX, INTERFACE_MTU_MIN from dcim.forms import InterfaceCommonForm, INTERFACE_MODE_HELP_TEXT from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site, SiteGroup from extras.forms import ( - AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm, + AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, + CustomFieldFilterForm, ) from extras.models import Tag from ipam.models import IPAddress, VLAN @@ -659,7 +660,8 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm) self.fields['tagged_vlans'].widget.add_query_param('available_on_virtualmachine', vm_id) -class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm): +class VMInterfaceCreateForm(BootstrapMixin, CustomFieldForm, InterfaceCommonForm): + model = VMInterface virtual_machine = DynamicModelChoiceField( queryset=VirtualMachine.objects.all() ) @@ -723,7 +725,7 @@ class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm): self.fields['tagged_vlans'].widget.add_query_param('available_on_virtualmachine', vm_id) -class VMInterfaceCSVForm(CSVModelForm): +class VMInterfaceCSVForm(CustomFieldModelCSVForm): virtual_machine = CSVModelChoiceField( queryset=VirtualMachine.objects.all(), to_field_name='name' @@ -746,7 +748,7 @@ class VMInterfaceCSVForm(CSVModelForm): return self.cleaned_data['enabled'] -class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm): +class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=VMInterface.objects.all(), widget=forms.MultipleHiddenInput() diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index fe0d5322f..4fdca3078 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -461,7 +461,7 @@ class VMInterfaceCreateView(generic.ComponentCreateView): queryset = VMInterface.objects.all() form = forms.VMInterfaceCreateForm model_form = forms.VMInterfaceForm - template_name = 'virtualization/virtualmachine_component_add.html' + template_name = 'dcim/device_component_add.html' class VMInterfaceEditView(generic.ObjectEditView):