From 4923025fec2ad1b0fb5d31895a2a101601818ce5 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Thu, 25 Apr 2024 06:22:32 -0700 Subject: [PATCH] 15541 Add component selector to InventoryItemTemplate (#15691) * 15541 update InventoryItemTemplateForm * 15541 update InventoryItemTemplateForm * Remove custom template --------- Co-authored-by: Jeremy Stretch --- netbox/dcim/forms/model_forms.py | 19 +++- netbox/dcim/views.py | 2 - .../dcim/inventoryitemtemplate_edit.html | 104 ------------------ 3 files changed, 13 insertions(+), 112 deletions(-) delete mode 100644 netbox/templates/dcim/inventoryitemtemplate_edit.html diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 511e0039e..81c1b17c7 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -1002,6 +1002,7 @@ class InventoryItemTemplateForm(ComponentTemplateForm): queryset=Manufacturer.objects.all(), required=False ) + # Assigned component selectors consoleporttemplate = DynamicModelChoiceField( queryset=ConsolePortTemplate.objects.all(), @@ -1063,8 +1064,19 @@ class InventoryItemTemplateForm(ComponentTemplateForm): fieldsets = ( FieldSet( 'device_type', 'parent', 'name', 'label', 'role', 'manufacturer', 'part_id', 'description', - 'component_type', 'component_id', ), + FieldSet( + TabbedGroups( + FieldSet('interfacetemplate', name=_('Interface')), + FieldSet('consoleporttemplate', name=_('Console Port')), + FieldSet('consoleserverporttemplate', name=_('Console Server Port')), + FieldSet('frontporttemplate', name=_('Front Port')), + FieldSet('rearporttemplate', name=_('Rear Port')), + FieldSet('powerporttemplate', name=_('Power Port')), + FieldSet('poweroutlettemplate', name=_('Power Outlet')), + ), + name=_('Component Assignment') + ) ) class Meta: @@ -1079,22 +1091,17 @@ class InventoryItemTemplateForm(ComponentTemplateForm): component_type = initial.get('component_type') component_id = initial.get('component_id') - # Used for picking the default active tab for component selection - self.no_component = True - if instance: # When editing set the initial value for component selection for component_model in ContentType.objects.filter(MODULAR_COMPONENT_TEMPLATE_MODELS): if type(instance.component) is component_model.model_class(): initial[component_model.model] = instance.component - self.no_component = False break elif component_type and component_id: # When adding the InventoryItem from a component page if content_type := ContentType.objects.filter(MODULAR_COMPONENT_TEMPLATE_MODELS).filter(pk=component_type).first(): if component := content_type.model_class().objects.filter(pk=component_id).first(): initial[content_type.model] = component - self.no_component = False kwargs['initial'] = initial diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 8968f8c52..120bbcb59 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -1655,7 +1655,6 @@ class InventoryItemTemplateCreateView(generic.ComponentCreateView): queryset = InventoryItemTemplate.objects.all() form = forms.InventoryItemTemplateCreateForm model_form = forms.InventoryItemTemplateForm - template_name = 'dcim/inventoryitemtemplate_edit.html' def alter_object(self, instance, request): # Set component (if any) @@ -1673,7 +1672,6 @@ class InventoryItemTemplateCreateView(generic.ComponentCreateView): class InventoryItemTemplateEditView(generic.ObjectEditView): queryset = InventoryItemTemplate.objects.all() form = forms.InventoryItemTemplateForm - template_name = 'dcim/inventoryitemtemplate_edit.html' @register_model_view(InventoryItemTemplate, 'delete') diff --git a/netbox/templates/dcim/inventoryitemtemplate_edit.html b/netbox/templates/dcim/inventoryitemtemplate_edit.html deleted file mode 100644 index d3ac58e25..000000000 --- a/netbox/templates/dcim/inventoryitemtemplate_edit.html +++ /dev/null @@ -1,104 +0,0 @@ -{% extends 'generic/object_edit.html' %} -{% load static %} -{% load form_helpers %} -{% load helpers %} -{% load i18n %} - -{% block form %} -
-
-
{% trans "Inventory Item" %}
-
- {% render_field form.device_type %} - {% render_field form.parent %} - {% render_field form.name %} - {% render_field form.label %} - {% render_field form.role %} - {% render_field form.description %} -
- -
-
-
{% trans "Hardware" %}
-
- {% render_field form.manufacturer %} - {% render_field form.part_id %} -
- -
-
-
{% trans "Component Assignment" %}
-
-
- -
-
-
- {% render_field form.consoleporttemplate %} -
-
- {% render_field form.consoleserverporttemplate %} -
-
- {% render_field form.frontporttemplate %} -
-
- {% render_field form.interfacetemplate %} -
-
- {% render_field form.poweroutlettemplate %} -
-
- {% render_field form.powerporttemplate %} -
-
- {% render_field form.rearporttemplate %} -
-
-
- - {% if form.custom_fields %} -
-
-
{% trans "Custom Fields" %}
-
- {% render_custom_fields form %} -
- {% endif %} -{% endblock %}