1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Closes #1846: Enable MPTT for InventoryItem hierarchy

This commit is contained in:
Jeremy Stretch
2020-09-18 10:18:03 -04:00
parent 0030fe1779
commit 230e7bbe34
12 changed files with 98 additions and 32 deletions

View File

@@ -6,6 +6,7 @@ from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
from django.db.models import Sum
from django.urls import reverse
from mptt.models import MPTTModel, TreeForeignKey
from taggit.managers import TaggableManager
from dcim.choices import *
@@ -15,6 +16,7 @@ from dcim.fields import MACAddressField
from extras.models import ObjectChange, TaggedItem
from extras.utils import extras_features
from utilities.fields import NaturalOrderingField
from utilities.mptt import TreeManager
from utilities.ordering import naturalize_interface
from utilities.querysets import RestrictedQuerySet
from utilities.query_functions import CollateAsChar
@@ -952,17 +954,18 @@ class DeviceBay(ComponentModel):
#
@extras_features('export_templates', 'webhooks')
class InventoryItem(ComponentModel):
class InventoryItem(MPTTModel, ComponentModel):
"""
An InventoryItem represents a serialized piece of hardware within a Device, such as a line card or power supply.
InventoryItems are used only for inventory purposes.
"""
parent = models.ForeignKey(
parent = TreeForeignKey(
to='self',
on_delete=models.CASCADE,
related_name='child_items',
blank=True,
null=True
null=True,
db_index=True
)
manufacturer = models.ForeignKey(
to='dcim.Manufacturer',
@@ -997,6 +1000,8 @@ class InventoryItem(ComponentModel):
tags = TaggableManager(through=TaggedItem)
objects = TreeManager()
csv_headers = [
'device', 'name', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered', 'description',
]