diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 398b2e5a6..85e43d156 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -43,6 +43,16 @@ MODULEBAY_STATUS = """ {% badge record.installed_module.get_status_display bg_color=record.installed_module.get_status_color %} """ +MACADDRESS_LINK = """ +{% if record.pk %} + {{ record.mac_address }} +{% endif %} +""" + +MACADDRESS_COPY_BUTTON = """ +{% copy_content record.pk prefix="macaddress_" %} +""" + # # Device roles @@ -599,9 +609,9 @@ class BaseInterfaceTable(NetBoxTable): class MACAddressTable(NetBoxTable): - mac_address = tables.Column( - verbose_name=_('MAC Address'), - linkify=True + mac_address = tables.TemplateColumn( + template_code=MACADDRESS_LINK, + verbose_name=_('MAC Address') ) assigned_object = tables.Column( linkify=True, @@ -625,6 +635,9 @@ class MACAddressTable(NetBoxTable): tags = columns.TagColumn( url_name='dcim:macaddress_list' ) + actions = columns.ActionsColumn( + extra_buttons=MACADDRESS_COPY_BUTTON + ) class Meta(DeviceComponentTable.Meta): model = models.MACAddress diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 94f848077..cc2425b68 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2548,7 +2548,6 @@ class MACAddressListView(generic.ObjectListView): filterset = filtersets.MACAddressFilterSet filterset_form = forms.MACAddressFilterForm table = tables.MACAddressTable - template_name = 'dcim/component_list.html' @register_model_view(MACAddress) @@ -2632,13 +2631,6 @@ class InterfaceView(generic.ObjectView): orderable=False ) - # Get MAC addresses - mac_addresses_table = tables.MACAddressTable( - data=instance.mac_addresses, - exclude=('assigned_object',), - orderable=False - ) - # Get assigned VLANs and annotate whether each is tagged or untagged vlans = [] if instance.untagged_vlan is not None: @@ -2665,7 +2657,6 @@ class InterfaceView(generic.ObjectView): 'vdc_table': vdc_table, 'bridge_interfaces_table': bridge_interfaces_table, 'child_interfaces_table': child_interfaces_table, - 'mac_addresses_table': mac_addresses_table, 'vlan_table': vlan_table, 'vlan_translation_table': vlan_translation_table, } diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 98fb3f487..476ee7ee7 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -358,7 +358,7 @@