Move vlan/interface-specific field operations to an overrideable method

This commit is contained in:
Brian Tiemann 2024-09-19 11:01:37 -04:00
parent e66695b059
commit c4aac4ea42
2 changed files with 11 additions and 5 deletions

View File

@ -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()

View File

@ -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):