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')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('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')),
(_('Contacts'), ('contact', 'contact_role', 'contact_group')),
(_('Components'), (
@ -713,7 +713,10 @@ class DeviceFilterForm(
queryset=Platform.objects.all(),
required=False,
null_option='None',
label=_('Platform')
label=_('Platform'),
query_params={
"manufacturer_id": '$manufacturer_id'
}
)
status = forms.MultipleChoiceField(
label=_('Status'),

View File

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

View File

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

View File

@ -1,7 +1,7 @@
from django import forms
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.models import ConfigTemplate
from ipam.models import L2VPN, VRF
@ -94,7 +94,7 @@ class VirtualMachineFilterForm(
(None, ('q', 'filter_id', 'tag')),
(_('Cluster'), ('cluster_group_id', 'cluster_type_id', 'cluster_id', 'device_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')),
(_('Contacts'), ('contact', 'contact_role', 'contact_group')),
)
@ -154,11 +154,19 @@ class VirtualMachineFilterForm(
choices=VirtualMachineStatusChoices,
required=False
)
manufacturer_id = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(),
required=False,
label=_('Manufacturer'),
)
platform_id = DynamicModelMultipleChoiceField(
queryset=Platform.objects.all(),
required=False,
null_option='None',
label=_('Platform')
label=_('Platform'),
query_params = {
"manufacturer_id": '$manufacturer_id'
}
)
mac_address = forms.CharField(
required=False,

View File

@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
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 ipam.models import IPAddress, VLAN, VLANGroup, VRF
from netbox.forms import NetBoxModelForm
@ -197,10 +197,21 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm):
"vm_role": "True"
}
)
manufacturer = DynamicModelChoiceField(
label=_('Manufacturer'),
queryset=Manufacturer.objects.all(),
required=False,
initial_params={
'platforms': '$platform'
}
)
platform = DynamicModelChoiceField(
label=_('Platform'),
queryset=Platform.objects.all(),
required=False
required=False,
query_params={
"manufacturer_id": '$manufacturer'
}
)
local_context_data = JSONField(
required=False,
@ -217,7 +228,7 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm):
(_('Virtual Machine'), ('name', 'role', 'status', 'description', 'tags')),
(_('Site/Cluster'), ('site', 'cluster', 'device')),
(_('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')),
(_('Config Context'), ('local_context_data',)),
)