diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 5dd7fc0a5..332af15a9 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -18,7 +18,7 @@ from jinja2.exceptions import TemplateError from circuits.models import Circuit, CircuitTermination from extras.views import ObjectConfigContextView from ipam.models import ASN, IPAddress, VLANGroup -from ipam.tables import InterfaceVLANTable, InterfaceVLANTranslationTable +from ipam.tables import InterfaceVLANTable, VLANTranslationRuleTable from netbox.constants import DEFAULT_ACTION_PERMISSIONS from netbox.views import generic from tenancy.views import ObjectContactsView @@ -2579,8 +2579,7 @@ class InterfaceView(generic.ObjectView): data=vlans, orderable=False ) - vlan_translation_table = InterfaceVLANTranslationTable( - interface=instance, + vlan_translation_table = VLANTranslationRuleTable( data=instance.vlan_translation_policy.rules.all() if instance.vlan_translation_policy else [], orderable=False ) diff --git a/netbox/ipam/tables/vlans.py b/netbox/ipam/tables/vlans.py index b2ea7b6b6..2bcf99d52 100644 --- a/netbox/ipam/tables/vlans.py +++ b/netbox/ipam/tables/vlans.py @@ -18,7 +18,6 @@ __all__ = ( 'VLANVirtualMachinesTable', 'VLANTranslationPolicyTable', 'VLANTranslationRuleTable', - 'InterfaceVLANTranslationTable', ) AVAILABLE_LABEL = mark_safe('Available') @@ -295,26 +294,3 @@ class VLANTranslationRuleTable(NetBoxTable): 'pk', 'id', 'name', 'policy', 'local_vid', 'remote_vid', 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'id', 'local_vid', 'remote_vid', 'policy') - - -class InterfaceVLANTranslationTable(NetBoxTable): - policy = tables.Column( - verbose_name=_('Policy'), - linkify=True - ) - local_vid = tables.Column( - verbose_name=_('Local VID'), - linkify=True, - ) - remote_vid = tables.Column( - verbose_name=_('Remote VID'), - ) - - class Meta(NetBoxTable.Meta): - model = VLANTranslationRule - fields = ('local_vid', 'remote_vid') - default_columns = ('pk', 'local_vid', 'remote_vid', 'policy') - - def __init__(self, interface, *args, **kwargs): - self.interface = interface - super().__init__(*args, **kwargs) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index d3c980970..af7860c6c 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -9,6 +9,7 @@ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.forms import InterfaceFilterForm from dcim.models import Interface, Site +from ipam.tables import VLANTranslationRuleTable from netbox.views import generic from tenancy.views import ObjectContactsView from utilities.query import count_related @@ -1002,8 +1003,12 @@ class VLANTranslationPolicyView(GetRelatedModelsMixin, generic.ObjectView): queryset = VLANTranslationPolicy.objects.all() def get_extra_context(self, request, instance): + vlan_translation_table = VLANTranslationRuleTable( + data=instance.rules.all(), + orderable=False + ) return { - 'related_models': self.get_related_models(request, instance), + 'vlan_translation_table': vlan_translation_table, } diff --git a/netbox/templates/ipam/vlantranslationpolicy.html b/netbox/templates/ipam/vlantranslationpolicy.html index f26f8db60..da45fe536 100644 --- a/netbox/templates/ipam/vlantranslationpolicy.html +++ b/netbox/templates/ipam/vlantranslationpolicy.html @@ -29,6 +29,11 @@ {% plugin_right_page object %} +
{% trans "Policy" %} | -{{ object.policy|placeholder }} | +{{ object.policy|linkify }} |
---|---|---|
{% trans "Local VID" %} | diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index d2765e1ae..caeaead1f 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -16,7 +16,7 @@ from dcim.models import Device from dcim.tables import DeviceTable from extras.views import ObjectConfigContextView from ipam.models import IPAddress -from ipam.tables import InterfaceVLANTable, InterfaceVLANTranslationTable +from ipam.tables import InterfaceVLANTable, VLANTranslationRuleTable from netbox.constants import DEFAULT_ACTION_PERMISSIONS from netbox.views import generic from tenancy.views import ObjectContactsView @@ -515,8 +515,7 @@ class VMInterfaceView(generic.ObjectView): exclude=('virtual_machine',), orderable=False ) - vlan_translation_table = InterfaceVLANTranslationTable( - interface=instance, + vlan_translation_table = VLANTranslationRuleTable( data=instance.vlan_translation_policy.rules.all() if instance.vlan_translation_policy else [], orderable=False )