From c4aac4ea42447d9a6217dd8cab767926041b9d4c Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Thu, 19 Sep 2024 11:01:37 -0400 Subject: [PATCH] Move vlan/interface-specific field operations to an overrideable method --- netbox/dcim/views.py | 7 +++++++ netbox/netbox/views/generic/bulk_views.py | 9 ++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 1f5b73603..c4bca327f 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2616,6 +2616,13 @@ class InterfaceBulkEditView(generic.BulkEditView): table = tables.InterfaceTable form = forms.InterfaceBulkEditForm + def extra_object_field_operations(self, form, obj): + # Add/remove tagged VLANs + if form.cleaned_data.get('add_tagged_vlans', None): + obj.tagged_vlans.add(*form.cleaned_data['add_tagged_vlans']) + if form.cleaned_data.get('remove_tagged_vlans', None): + obj.tagged_vlans.remove(*form.cleaned_data['remove_tagged_vlans']) + class InterfaceBulkRenameView(generic.BulkRenameView): queryset = Interface.objects.all() diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index c3478e316..c5582e1b0 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -541,6 +541,9 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): def get_required_permission(self): return get_permission_for_model(self.queryset.model, 'change') + def extra_object_field_operations(self, form, obj): + pass + def _update_objects(self, form, request): custom_fields = getattr(form, 'custom_fields', {}) standard_fields = [ @@ -615,11 +618,7 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): if form.cleaned_data.get('remove_tags', None): obj.tags.remove(*form.cleaned_data['remove_tags']) - # Add/remove tagged VLANs - if form.cleaned_data.get('add_tagged_vlans', None): - obj.tagged_vlans.add(*form.cleaned_data['add_tagged_vlans']) - if form.cleaned_data.get('remove_tagged_vlans', None): - obj.tagged_vlans.remove(*form.cleaned_data['remove_tagged_vlans']) + self.extra_object_field_operations(form, obj) # Rebuild the tree for MPTT models if issubclass(self.queryset.model, MPTTModel):