mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 03:56:53 -06:00
Add component import to InventoryItem bulk import
This commit is contained in:
parent
b35b33e798
commit
bfab3a26bc
@ -885,12 +885,22 @@ class InventoryItemImportForm(NetBoxModelImportForm):
|
|||||||
required=False,
|
required=False,
|
||||||
help_text=_('Parent inventory item')
|
help_text=_('Parent inventory item')
|
||||||
)
|
)
|
||||||
|
component_type = CSVContentTypeField(
|
||||||
|
queryset=ContentType.objects.all(),
|
||||||
|
limit_choices_to=MODULAR_COMPONENT_MODELS,
|
||||||
|
required=False,
|
||||||
|
help_text=_('Component Type')
|
||||||
|
)
|
||||||
|
component_name = forms.CharField(
|
||||||
|
required=False,
|
||||||
|
help_text=_('Component Name')
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InventoryItem
|
model = InventoryItem
|
||||||
fields = (
|
fields = (
|
||||||
'device', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
|
'device', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
|
||||||
'description', 'tags'
|
'description', 'tags', 'component_type', 'component_name',
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -908,6 +918,24 @@ class InventoryItemImportForm(NetBoxModelImportForm):
|
|||||||
else:
|
else:
|
||||||
self.fields['parent'].queryset = InventoryItem.objects.none()
|
self.fields['parent'].queryset = InventoryItem.objects.none()
|
||||||
|
|
||||||
|
def clean_component_name(self):
|
||||||
|
content_type = self.cleaned_data.get('component_type')
|
||||||
|
component_name = self.cleaned_data.get('component_name')
|
||||||
|
device = self.cleaned_data.get("device")
|
||||||
|
|
||||||
|
if not device and hasattr(self, 'instance'):
|
||||||
|
device = self.instance.device
|
||||||
|
|
||||||
|
if not all([device, content_type, component_name]):
|
||||||
|
return None
|
||||||
|
|
||||||
|
model = content_type.model_class()
|
||||||
|
try:
|
||||||
|
component = model.objects.get(device=device, name=component_name)
|
||||||
|
self.instance.component = component
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
raise forms.ValidationError(f"Component not found: {device} - {component_name}")
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device component roles
|
# Device component roles
|
||||||
|
Loading…
Reference in New Issue
Block a user