From f986903f6eaf3871ecbc49fb88e383f9115d91cb Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Thu, 14 May 2026 08:55:52 -0400 Subject: [PATCH] Show all rename fields in preview table for models with both name and label For device/module component models, the preview table now always shows four columns: Current Name, New Name, Current Label, New Label. The New column for the non-targeted field is left empty to make clear which field the find/replace pattern applies to. This gives users full context when identifying objects and planning renames. Co-Authored-By: Claude Sonnet 4.6 --- netbox/netbox/views/generic/bulk_views.py | 2 ++ netbox/templates/generic/bulk_rename.html | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index da03d518a..8f56fc69b 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -910,6 +910,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView): ) rename_fields = self._get_rename_fields() + self.has_label_field = bool(rename_fields) form_attrs = { 'pk': ModelMultipleChoiceField( queryset=self.queryset, @@ -1017,6 +1018,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView): return render(request, self.template_name, { 'field_name': field_name, + 'has_label_field': self.has_label_field, 'form': form, 'obj_type_plural': self.queryset.model._meta.verbose_name_plural, 'selected_objects': selected_objects, diff --git a/netbox/templates/generic/bulk_rename.html b/netbox/templates/generic/bulk_rename.html index 037d2ce1f..bbb1013cd 100644 --- a/netbox/templates/generic/bulk_rename.html +++ b/netbox/templates/generic/bulk_rename.html @@ -34,6 +34,28 @@ Context:
+ {% if has_label_field %} + + + + + + + + + + {% for obj in selected_objects %} + {% with current_target=obj|getattr:field_name %} + + + + + + + {% endwith %} + {% endfor %} + + {% else %} {% with field_label=field_name|title %} @@ -52,6 +74,7 @@ Context: {% endwith %} {% endfor %} + {% endif %}
{% trans "Current Name" %}{% trans "New Name" %}{% trans "Current Label" %}{% trans "New Label" %}
{{ obj.name }}{% if field_name == 'name' %}{{ obj.new_name }}{% endif %}{{ obj.label }}{% if field_name == 'label' %}{{ obj.new_name }}{% endif %}