Add manufacturer for filters in the virtual machine and device #12741

This commit is contained in:
Prince Kumar 2023-10-16 19:35:20 +05:30
parent 14447befb9
commit 0ec158d2c4
5 changed files with 43 additions and 9 deletions

View File

@ -643,7 +643,7 @@ class DeviceFilterForm(
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Operation'), ('status', 'role_id', 'airflow', 'serial', 'asset_tag', 'mac_address')), (_('Operation'), ('status', 'role_id', 'airflow', 'serial', 'asset_tag', 'mac_address')),
(_('Hardware'), ('manufacturer_id', 'device_type_id', 'platform_id')), (_('Hardware'), ('manufacturer_id', 'platform_id', 'device_type_id')),
(_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Tenant'), ('tenant_group_id', 'tenant_id')),
(_('Contacts'), ('contact', 'contact_role', 'contact_group')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')),
(_('Components'), ( (_('Components'), (
@ -713,7 +713,10 @@ class DeviceFilterForm(
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
label=_('Platform') label=_('Platform'),
query_params={
"manufacturer_id": '$manufacturer_id'
}
) )
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
label=_('Status'), label=_('Status'),

View File

@ -439,10 +439,21 @@ class DeviceForm(TenancyForm, NetBoxModelForm):
label=_('Device role'), label=_('Device role'),
queryset=DeviceRole.objects.all() queryset=DeviceRole.objects.all()
) )
manufacturer = DynamicModelChoiceField(
label=_('Manufacturer'),
queryset=Manufacturer.objects.all(),
required=False,
initial_params={
'platforms': '$platform'
}
)
platform = DynamicModelChoiceField( platform = DynamicModelChoiceField(
label=_('Platform'), label=_('Platform'),
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
required=False required=False,
query_params={
"manufacturer_id": '$manufacturer'
}
) )
cluster = DynamicModelChoiceField( cluster = DynamicModelChoiceField(
label=_('Cluster'), label=_('Cluster'),

View File

@ -64,6 +64,7 @@
<h5 class="offset-sm-3">{% trans "Management" %}</h5> <h5 class="offset-sm-3">{% trans "Management" %}</h5>
</div> </div>
{% render_field form.status %} {% render_field form.status %}
{% render_field form.manufacturer %}
{% render_field form.platform %} {% render_field form.platform %}
{% render_field form.config_template %} {% render_field form.config_template %}
{% if object.pk %} {% if object.pk %}

View File

@ -1,7 +1,7 @@
from django import forms from django import forms
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup from dcim.models import Device, DeviceRole, Manufacturer, Platform, Region, Site, SiteGroup
from extras.forms import LocalConfigContextFilterForm from extras.forms import LocalConfigContextFilterForm
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.models import L2VPN, VRF from ipam.models import L2VPN, VRF
@ -94,7 +94,7 @@ class VirtualMachineFilterForm(
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Cluster'), ('cluster_group_id', 'cluster_type_id', 'cluster_id', 'device_id')), (_('Cluster'), ('cluster_group_id', 'cluster_type_id', 'cluster_id', 'device_id')),
(_('Location'), ('region_id', 'site_group_id', 'site_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id')),
(_('Attributes'), ('status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'config_template_id', 'local_context_data')), (_('Attributes'), ('status', 'role_id', 'manufacturer_id', 'platform_id', 'mac_address', 'has_primary_ip', 'config_template_id', 'local_context_data')),
(_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Tenant'), ('tenant_group_id', 'tenant_id')),
(_('Contacts'), ('contact', 'contact_role', 'contact_group')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')),
) )
@ -154,11 +154,19 @@ class VirtualMachineFilterForm(
choices=VirtualMachineStatusChoices, choices=VirtualMachineStatusChoices,
required=False required=False
) )
manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(),
required=False,
label=_('Manufacturer'),
)
platform_id = DynamicModelMultipleChoiceField( platform_id = DynamicModelMultipleChoiceField(
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
label=_('Platform') label=_('Platform'),
query_params = {
"manufacturer_id": '$manufacturer_id'
}
) )
mac_address = forms.CharField( mac_address = forms.CharField(
required=False, required=False,

View File

@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from dcim.forms.common import InterfaceCommonForm from dcim.forms.common import InterfaceCommonForm
from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site, SiteGroup from dcim.models import Device, DeviceRole, Manufacturer, Platform, Rack, Region, Site, SiteGroup
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.models import IPAddress, VLAN, VLANGroup, VRF from ipam.models import IPAddress, VLAN, VLANGroup, VRF
from netbox.forms import NetBoxModelForm from netbox.forms import NetBoxModelForm
@ -197,10 +197,21 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm):
"vm_role": "True" "vm_role": "True"
} }
) )
manufacturer = DynamicModelChoiceField(
label=_('Manufacturer'),
queryset=Manufacturer.objects.all(),
required=False,
initial_params={
'platforms': '$platform'
}
)
platform = DynamicModelChoiceField( platform = DynamicModelChoiceField(
label=_('Platform'), label=_('Platform'),
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
required=False required=False,
query_params={
"manufacturer_id": '$manufacturer'
}
) )
local_context_data = JSONField( local_context_data = JSONField(
required=False, required=False,
@ -217,7 +228,7 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm):
(_('Virtual Machine'), ('name', 'role', 'status', 'description', 'tags')), (_('Virtual Machine'), ('name', 'role', 'status', 'description', 'tags')),
(_('Site/Cluster'), ('site', 'cluster', 'device')), (_('Site/Cluster'), ('site', 'cluster', 'device')),
(_('Tenancy'), ('tenant_group', 'tenant')), (_('Tenancy'), ('tenant_group', 'tenant')),
(_('Management'), ('platform', 'primary_ip4', 'primary_ip6', 'config_template')), (_('Management'), ('manufacturer', 'platform', 'primary_ip4', 'primary_ip6', 'config_template')),
(_('Resources'), ('vcpus', 'memory', 'disk')), (_('Resources'), ('vcpus', 'memory', 'disk')),
(_('Config Context'), ('local_context_data',)), (_('Config Context'), ('local_context_data',)),
) )