Skip to content

Commit

Permalink
15541 Add component selector to InventoryItemTemplate (#15691)
Browse files Browse the repository at this point in the history
* 15541 update InventoryItemTemplateForm

* 15541 update InventoryItemTemplateForm

* Remove custom template

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
  • Loading branch information
arthanson and jeremystretch committed Apr 25, 2024
1 parent ded2fe9 commit 4923025
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 112 deletions.
19 changes: 13 additions & 6 deletions netbox/dcim/forms/model_forms.py
Expand Up @@ -1002,6 +1002,7 @@ class InventoryItemTemplateForm(ComponentTemplateForm):
queryset=Manufacturer.objects.all(),
required=False
)

# Assigned component selectors
consoleporttemplate = DynamicModelChoiceField(
queryset=ConsolePortTemplate.objects.all(),
Expand Down Expand Up @@ -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:
Expand All @@ -1079,22 +1091,17 @@ def __init__(self, *args, **kwargs):
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

Expand Down
2 changes: 0 additions & 2 deletions netbox/dcim/views.py
Expand Up @@ -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)
Expand All @@ -1673,7 +1672,6 @@ def alter_object(self, instance, request):
class InventoryItemTemplateEditView(generic.ObjectEditView):
queryset = InventoryItemTemplate.objects.all()
form = forms.InventoryItemTemplateForm
template_name = 'dcim/inventoryitemtemplate_edit.html'


@register_model_view(InventoryItemTemplate, 'delete')
Expand Down
104 changes: 0 additions & 104 deletions netbox/templates/dcim/inventoryitemtemplate_edit.html

This file was deleted.

0 comments on commit 4923025

Please sign in to comment.