From e3e351d1f0c5548ce26632b5b7e9efe583409524 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 28 Aug 2024 15:48:04 -0400 Subject: [PATCH] Fixes #17278: Rebuild the tree after bulk editing MPTT-enabled object types --- netbox/netbox/views/generic/bulk_views.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 46899e525..36ceef7f1 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -9,13 +9,14 @@ from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, Valida from django.db import transaction, IntegrityError from django.db.models import ManyToManyField, ProtectedError, RestrictedError from django.db.models.fields.reverse_related import ManyToManyRel -from django.forms import HiddenInput, ModelMultipleChoiceField, MultipleHiddenInput +from django.forms import ModelMultipleChoiceField, MultipleHiddenInput from django.http import HttpResponse from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils.safestring import mark_safe from django.utils.translation import gettext as _ from django_tables2.export import TableExport +from mptt.models import MPTTModel from core.models import ObjectType from extras.choices import CustomFieldUIEditableChoices @@ -614,6 +615,10 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): if form.cleaned_data.get('remove_tags', None): obj.tags.remove(*form.cleaned_data['remove_tags']) + # Rebuild the tree for MPTT models + if issubclass(self.queryset.model, MPTTModel): + self.queryset.model.objects.rebuild() + return updated_objects #