Make vlan_translation_policy fields on filtersets more consistent with existing __name convention

This commit is contained in:
Brian Tiemann 2024-10-20 18:14:12 -04:00
parent c9eb6cb4bf
commit f396847d54
7 changed files with 21 additions and 12 deletions

View File

@ -8,7 +8,7 @@ from circuits.models import CircuitTermination
from extras.filtersets import LocalConfigContextFilterSet from extras.filtersets import LocalConfigContextFilterSet
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.filtersets import PrimaryIPFilterSet from ipam.filtersets import PrimaryIPFilterSet
from ipam.models import ASN, IPAddress, VRF, VLANTranslationPolicy from ipam.models import ASN, IPAddress, VLANTranslationPolicy, VRF
from netbox.choices import ColorChoices from netbox.choices import ColorChoices
from netbox.filtersets import ( from netbox.filtersets import (
BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet, BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet,
@ -1738,11 +1738,11 @@ class InterfaceFilterSet(
queryset=VLANTranslationPolicy.objects.all(), queryset=VLANTranslationPolicy.objects.all(),
label=_('VLAN Translation Policy (ID)'), label=_('VLAN Translation Policy (ID)'),
) )
vlan_translation_policy_name = django_filters.ModelMultipleChoiceFilter( vlan_translation_policy = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy__name', field_name='vlan_translation_policy__name',
queryset=VLANTranslationPolicy.objects.all(), queryset=VLANTranslationPolicy.objects.all(),
to_field_name='name', to_field_name='name',
label=_('VLAN Translation Policy (name)'), label=_('VLAN Translation Policy'),
) )
class Meta: class Meta:

View File

@ -7,7 +7,7 @@ from dcim.choices import *
from dcim.constants import * from dcim.constants import *
from dcim.models import * from dcim.models import *
from extras.models import ConfigTemplate from extras.models import ConfigTemplate
from ipam.models import ASN, IPAddress, VLAN, VLANGroup, VRF from ipam.models import ASN, IPAddress, VLAN, VLANGroup, VLANTranslationPolicy, VRF
from netbox.forms import NetBoxModelForm from netbox.forms import NetBoxModelForm
from tenancy.forms import TenancyForm from tenancy.forms import TenancyForm
from users.models import User from users.models import User
@ -1382,6 +1382,11 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
required=False, required=False,
label=_('WWN') label=_('WWN')
) )
vlan_translation_policy = DynamicModelChoiceField(
queryset=VLANTranslationPolicy.objects.all(),
required=False,
label=_('VLAN Translation Policy')
)
fieldsets = ( fieldsets = (
FieldSet( FieldSet(

View File

@ -4,7 +4,7 @@ from circuits.models import Circuit, CircuitTermination, CircuitType, Provider
from dcim.choices import * from dcim.choices import *
from dcim.filtersets import * from dcim.filtersets import *
from dcim.models import * from dcim.models import *
from ipam.models import ASN, IPAddress, RIR, VRF, VLANTranslationPolicy from ipam.models import ASN, IPAddress, RIR, VLANTranslationPolicy, VRF
from netbox.choices import ColorChoices, WeightUnitChoices from netbox.choices import ColorChoices, WeightUnitChoices
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from users.models import User from users.models import User
@ -4032,7 +4032,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2] vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2]
params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]} params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
params = {'vlan_translation_policy_name': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]} params = {'vlan_translation_policy': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)

View File

@ -710,8 +710,6 @@ class VLANTranslationRuleForm(NetBoxModelForm):
policy = DynamicModelChoiceField( policy = DynamicModelChoiceField(
label=_('Policy'), label=_('Policy'),
queryset=VLANTranslationPolicy.objects.all(), queryset=VLANTranslationPolicy.objects.all(),
required=False,
null_option='None',
selector=True selector=True
) )

View File

@ -306,7 +306,7 @@ class VMInterfaceFilterSet(NetBoxModelFilterSet, CommonInterfaceFilterSet):
queryset=VLANTranslationPolicy.objects.all(), queryset=VLANTranslationPolicy.objects.all(),
label=_('VLAN Translation Policy (ID)'), label=_('VLAN Translation Policy (ID)'),
) )
vlan_translation_policy_name = django_filters.ModelMultipleChoiceFilter( vlan_translation_policy = django_filters.ModelMultipleChoiceFilter(
field_name='vlan_translation_policy__name', field_name='vlan_translation_policy__name',
queryset=VLANTranslationPolicy.objects.all(), queryset=VLANTranslationPolicy.objects.all(),
to_field_name='name', to_field_name='name',

View File

@ -6,7 +6,7 @@ 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, 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, VLANTranslationPolicy, VRF
from netbox.forms import NetBoxModelForm from netbox.forms import NetBoxModelForm
from tenancy.forms import TenancyForm from tenancy.forms import TenancyForm
from utilities.forms import ConfirmationForm from utilities.forms import ConfirmationForm
@ -343,6 +343,11 @@ class VMInterfaceForm(InterfaceCommonForm, VMComponentForm):
required=False, required=False,
label=_('VRF') label=_('VRF')
) )
vlan_translation_policy = DynamicModelChoiceField(
queryset=VLANTranslationPolicy.objects.all(),
required=False,
label=_('VLAN Translation Policy')
)
fieldsets = ( fieldsets = (
FieldSet('virtual_machine', 'name', 'description', 'tags', name=_('Interface')), FieldSet('virtual_machine', 'name', 'description', 'tags', name=_('Interface')),
@ -350,6 +355,7 @@ class VMInterfaceForm(InterfaceCommonForm, VMComponentForm):
FieldSet('mtu', 'enabled', name=_('Operation')), FieldSet('mtu', 'enabled', name=_('Operation')),
FieldSet('parent', 'bridge', name=_('Related Interfaces')), FieldSet('parent', 'bridge', name=_('Related Interfaces')),
FieldSet('mode', 'vlan_group', 'untagged_vlan', 'tagged_vlans', name=_('802.1Q Switching')), FieldSet('mode', 'vlan_group', 'untagged_vlan', 'tagged_vlans', name=_('802.1Q Switching')),
FieldSet('vlan_translation_policy', name=_('VLAN Translation'))
) )
class Meta: class Meta:

View File

@ -1,7 +1,7 @@
from django.test import TestCase from django.test import TestCase
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
from ipam.models import IPAddress, VRF, VLANTranslationPolicy from ipam.models import IPAddress, VLANTranslationPolicy, VRF
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
from virtualization.choices import * from virtualization.choices import *
@ -671,7 +671,7 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2] vlan_translation_policies = VLANTranslationPolicy.objects.all()[:2]
params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]} params = {'vlan_translation_policy_id': [vlan_translation_policies[0].pk, vlan_translation_policies[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'vlan_translation_policy_name': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]} params = {'vlan_translation_policy': [vlan_translation_policies[0].name, vlan_translation_policies[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)