Refactor InventoryItemImportForm clean method

This commit is contained in:
Renato Almeida de Oliveira Zaroubin 2025-03-11 22:46:19 +00:00
parent 292463c0de
commit f62b2c7552

View File

@ -1161,27 +1161,35 @@ class InventoryItemImportForm(NetBoxModelImportForm):
else:
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')
def clean(self):
cleaned_data = self.cleaned_data
content_type = cleaned_data.get('component_type')
component_name = cleaned_data.get('component_name')
device = self.cleaned_data.get("device")
if not device and hasattr(self, 'instance') and hasattr(self.instance, 'device'):
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(
_("Component not found: {device} - {component_name}").format(
device=device, component_name=component_name
if content_type:
if device is None:
cleaned_data.pop('component_type')
if component_name is None:
cleaned_data.pop('component_type')
raise forms.ValidationError(
_("Component name must be specified when component type is specified")
)
)
if all([device, component_name]):
try:
model = content_type.model_class()
component = model.objects.get(device=device, name=component_name)
self.instance.component = component
except ObjectDoesNotExist:
cleaned_data.pop('component_type')
cleaned_data.pop('component_name')
raise forms.ValidationError(
_("Component not found: {device} - {component_name}").format(
device=device, component_name=component_name
)
)
return cleaned_data
#