diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 938aa731c..c29fdec4e 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -1157,7 +1157,7 @@ class InventoryItem(TreeNode, ComponentModel): }) # Prevent moving InventoryItems with children - first_child = self.get_children().first() + first_child = self.children.first() if first_child and first_child.device != self.device: raise ValidationError("Cannot move an inventory item with dependent children") diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index a908a6ab6..891d8a369 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -866,7 +866,7 @@ class Device(PrimaryModel, ConfigContextModel): self._instantiate_components(self.device_type.frontporttemplates.all()) self._instantiate_components(self.device_type.modulebaytemplates.all()) self._instantiate_components(self.device_type.devicebaytemplates.all()) - # Disable bulk_create to accommodate MPTT + # Disable bulk_create to accommodate django-tree-queries self._instantiate_components(self.device_type.inventoryitemtemplates.all(), bulk_create=False) # Interface bridges have to be set after interface instantiation update_interface_bridges(self, self.device_type.interfacetemplates.all()) diff --git a/netbox/dcim/svg/racks.py b/netbox/dcim/svg/racks.py index 9c317ea16..01026d522 100644 --- a/netbox/dcim/svg/racks.py +++ b/netbox/dcim/svg/racks.py @@ -36,7 +36,7 @@ def get_device_name(device): else: name = str(device.device_type) if device.devicebay_count: - name += ' ({}/{})'.format(device.get_children().count(), device.devicebay_count) + name += ' ({}/{})'.format(device.children.count(), device.devicebay_count) return name diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index a4de18cee..f5f1bf272 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -19,7 +19,7 @@ __all__ = ( # class RegionTable(ContactsColumnMixin, NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) site_count = columns.LinkedCountColumn( @@ -45,7 +45,7 @@ class RegionTable(ContactsColumnMixin, NetBoxTable): # class SiteGroupTable(ContactsColumnMixin, NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) site_count = columns.LinkedCountColumn( @@ -111,7 +111,7 @@ class SiteTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): # class LocationTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) site = tables.Column( diff --git a/netbox/netbox/api/serializers/__init__.py b/netbox/netbox/api/serializers/__init__.py index 25f3d800a..e5eecebb3 100644 --- a/netbox/netbox/api/serializers/__init__.py +++ b/netbox/netbox/api/serializers/__init__.py @@ -19,7 +19,7 @@ class NetBoxModelSerializer(TaggableModelSerializer, CustomFieldModelSerializer, class NestedGroupModelSerializer(NetBoxModelSerializer): """ - Extends PrimaryModelSerializer to include MPTT support. + Extends PrimaryModelSerializer to include Tree support. """ _depth = serializers.IntegerField(source='tree_depth', read_only=True) diff --git a/netbox/netbox/tables/columns.py b/netbox/netbox/tables/columns.py index 83856a046..7f2720a10 100644 --- a/netbox/netbox/tables/columns.py +++ b/netbox/netbox/tables/columns.py @@ -33,7 +33,7 @@ __all__ = ( 'LinkedCountColumn', 'MarkdownColumn', 'ManyToManyColumn', - 'MPTTColumn', + 'TreeColumn', 'TagColumn', 'TemplateColumn', 'ToggleColumn', @@ -531,9 +531,9 @@ class CustomLinkColumn(tables.Column): return None -class MPTTColumn(tables.TemplateColumn): +class TreeColumn(tables.TemplateColumn): """ - Display a nested hierarchy for MPTT-enabled models. + Display a nested hierarchy for Tree-enabled models. """ template_code = """ {% load helpers %} diff --git a/netbox/tenancy/tables/contacts.py b/netbox/tenancy/tables/contacts.py index 0c697af79..a90753a82 100644 --- a/netbox/tenancy/tables/contacts.py +++ b/netbox/tenancy/tables/contacts.py @@ -13,7 +13,7 @@ __all__ = ( class ContactGroupTable(NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) contact_count = columns.LinkedCountColumn( diff --git a/netbox/tenancy/tables/tenants.py b/netbox/tenancy/tables/tenants.py index 67f69ef5e..4dfcdeb57 100644 --- a/netbox/tenancy/tables/tenants.py +++ b/netbox/tenancy/tables/tenants.py @@ -11,7 +11,7 @@ __all__ = ( class TenantGroupTable(NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) tenant_count = columns.LinkedCountColumn( diff --git a/netbox/utilities/testing/api.py b/netbox/utilities/testing/api.py index 7f24c86b8..379e714fa 100644 --- a/netbox/utilities/testing/api.py +++ b/netbox/utilities/testing/api.py @@ -418,7 +418,7 @@ class APIViewTestCases: obj_perm.object_types.add(ContentType.objects.get_for_model(self.model)) # Target the three most recently created objects to avoid triggering recursive deletions - # (e.g. with MPTT objects) + # (e.g. with django-tree-queries objects) id_list = list(self._get_queryset().order_by('-id').values_list('id', flat=True)[:3]) self.assertEqual(len(id_list), 3, "Insufficient number of objects to test bulk deletion") data = [{"id": id} for id in id_list] diff --git a/netbox/wireless/tables/wirelesslan.py b/netbox/wireless/tables/wirelesslan.py index 5d17465f0..110e13a8b 100644 --- a/netbox/wireless/tables/wirelesslan.py +++ b/netbox/wireless/tables/wirelesslan.py @@ -13,7 +13,7 @@ __all__ = ( class WirelessLANGroupTable(NetBoxTable): - name = columns.MPTTColumn( + name = columns.TreeColumn( linkify=True ) wirelesslan_count = columns.LinkedCountColumn(