mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	Fixes #6680: Allow setting custom field values for VM interfaces on intial creation
This commit is contained in:
		@@ -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
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
{% extends 'base.html' %}
 | 
			
		||||
{% load helpers %}
 | 
			
		||||
{% load form_helpers %}
 | 
			
		||||
 | 
			
		||||
{% block title %}Create {{ component_type }}{% endblock %}
 | 
			
		||||
@@ -18,19 +19,34 @@
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            <div class="panel panel-default">
 | 
			
		||||
                <div class="panel-heading">
 | 
			
		||||
                    <strong>{{ component_type|title }}</strong>
 | 
			
		||||
                    <strong>{{ component_type|bettertitle }}</strong>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="panel-body">
 | 
			
		||||
                    {% 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 %}
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
		    <div class="form-group">
 | 
			
		||||
            {% if form.custom_fields %}
 | 
			
		||||
                <div class="panel panel-default">
 | 
			
		||||
                    <div class="panel-heading"><strong>Custom Fields</strong></div>
 | 
			
		||||
                    <div class="panel-body">
 | 
			
		||||
                        {% render_custom_fields form %}
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            <div class="form-group">
 | 
			
		||||
                <div class="col-md-9 col-md-offset-3">
 | 
			
		||||
                    <button type="submit" name="_create" class="btn btn-primary">Create</button>
 | 
			
		||||
                    <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
 | 
			
		||||
                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
 | 
			
		||||
                </div>
 | 
			
		||||
		    </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</form>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
{% extends 'base.html' %}
 | 
			
		||||
{% load helpers %}
 | 
			
		||||
{% load form_helpers %}
 | 
			
		||||
 | 
			
		||||
{% block title %}Create {{ component_type }}{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
<form action="" method="post" class="form form-horizontal">
 | 
			
		||||
    {% csrf_token %}
 | 
			
		||||
    <div class="row">
 | 
			
		||||
        <div class="col-md-6 col-md-offset-3">
 | 
			
		||||
            {% if form.non_field_errors %}
 | 
			
		||||
                <div class="panel panel-danger">
 | 
			
		||||
                    <div class="panel-heading"><strong>Errors</strong></div>
 | 
			
		||||
                    <div class="panel-body">
 | 
			
		||||
                        {{ form.non_field_errors }}
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            <div class="panel panel-default">
 | 
			
		||||
                <div class="panel-heading">
 | 
			
		||||
                    <strong>{{ component_type|bettertitle }}</strong>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="panel-body">
 | 
			
		||||
                    {% render_form form %}
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
		    <div class="form-group">
 | 
			
		||||
                <div class="col-md-9 col-md-offset-3">
 | 
			
		||||
                    <button type="submit" name="_create" class="btn btn-primary">Create</button>
 | 
			
		||||
                    <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
 | 
			
		||||
                    <a href="{{ return_url }}" class="btn btn-default">Cancel</a>
 | 
			
		||||
                </div>
 | 
			
		||||
		    </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user