Enable defining port mappings when importing device/module types
Some checks failed
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled

This commit is contained in:
Jeremy Stretch 2025-11-26 15:04:43 -05:00
parent 9e367b8fc1
commit fa70430942
3 changed files with 47 additions and 2 deletions

View File

@ -13,6 +13,7 @@ __all__ = (
'InterfaceTemplateImportForm', 'InterfaceTemplateImportForm',
'InventoryItemTemplateImportForm', 'InventoryItemTemplateImportForm',
'ModuleBayTemplateImportForm', 'ModuleBayTemplateImportForm',
'PortTemplateMappingImportForm',
'PowerOutletTemplateImportForm', 'PowerOutletTemplateImportForm',
'PowerPortTemplateImportForm', 'PowerPortTemplateImportForm',
'RearPortTemplateImportForm', 'RearPortTemplateImportForm',
@ -134,6 +135,25 @@ class RearPortTemplateImportForm(forms.ModelForm):
] ]
class PortTemplateMappingImportForm(forms.ModelForm):
front_port = forms.ModelChoiceField(
label=_('Front port'),
queryset=FrontPortTemplate.objects.all(),
to_field_name='name',
)
rear_port = forms.ModelChoiceField(
label=_('Rear port'),
queryset=RearPortTemplate.objects.all(),
to_field_name='name',
)
class Meta:
model = PortTemplateMapping
fields = [
'front_port', 'front_port_position', 'rear_port', 'rear_port_position',
]
class ModuleBayTemplateImportForm(forms.ModelForm): class ModuleBayTemplateImportForm(forms.ModelForm):
class Meta: class Meta:

View File

@ -865,12 +865,16 @@ rear-ports:
front-ports: front-ports:
- name: Front Port 1 - name: Front Port 1
type: 8p8c type: 8p8c
rear_port: Rear Port 1
- name: Front Port 2 - name: Front Port 2
type: 8p8c type: 8p8c
rear_port: Rear Port 2
- name: Front Port 3 - name: Front Port 3
type: 8p8c type: 8p8c
port-mappings:
- front_port: Front Port 1
rear_port: Rear Port 1
- front_port: Front Port 2
rear_port: Rear Port 2
- front_port: Front Port 3
rear_port: Rear Port 3 rear_port: Rear Port 3
module-bays: module-bays:
- name: Module Bay 1 - name: Module Bay 1
@ -971,6 +975,12 @@ inventory-items:
fp1 = FrontPortTemplate.objects.first() fp1 = FrontPortTemplate.objects.first()
self.assertEqual(fp1.name, 'Front Port 1') self.assertEqual(fp1.name, 'Front Port 1')
self.assertEqual(device_type.port_mappings.count(), 3)
mapping1 = PortTemplateMapping.objects.first()
self.assertEqual(mapping1.device_type, device_type)
self.assertEqual(mapping1.front_port, fp1)
self.assertEqual(mapping1.rear_port, rp1)
self.assertEqual(device_type.modulebaytemplates.count(), 3) self.assertEqual(device_type.modulebaytemplates.count(), 3)
mb1 = ModuleBayTemplate.objects.first() mb1 = ModuleBayTemplate.objects.first()
self.assertEqual(mb1.name, 'Module Bay 1') self.assertEqual(mb1.name, 'Module Bay 1')
@ -1394,6 +1404,13 @@ front-ports:
type: 8p8c type: 8p8c
- name: Front Port 3 - name: Front Port 3
type: 8p8c type: 8p8c
port-mappings:
- front_port: Front Port 1
rear_port: Rear Port 1
- front_port: Front Port 2
rear_port: Rear Port 2
- front_port: Front Port 3
rear_port: Rear Port 3
module-bays: module-bays:
- name: Module Bay 1 - name: Module Bay 1
position: 1 position: 1
@ -1471,6 +1488,12 @@ module-bays:
fp1 = FrontPortTemplate.objects.first() fp1 = FrontPortTemplate.objects.first()
self.assertEqual(fp1.name, 'Front Port 1') self.assertEqual(fp1.name, 'Front Port 1')
self.assertEqual(module_type.port_mappings.count(), 3)
mapping1 = PortTemplateMapping.objects.first()
self.assertEqual(mapping1.module_type, module_type)
self.assertEqual(mapping1.front_port, fp1)
self.assertEqual(mapping1.rear_port, rp1)
self.assertEqual(module_type.modulebaytemplates.count(), 3) self.assertEqual(module_type.modulebaytemplates.count(), 3)
mb1 = ModuleBayTemplate.objects.first() mb1 = ModuleBayTemplate.objects.first()
self.assertEqual(mb1.name, 'Module Bay 1') self.assertEqual(mb1.name, 'Module Bay 1')

View File

@ -1516,6 +1516,7 @@ class DeviceTypeImportView(generic.BulkImportView):
'interfaces': forms.InterfaceTemplateImportForm, 'interfaces': forms.InterfaceTemplateImportForm,
'rear-ports': forms.RearPortTemplateImportForm, 'rear-ports': forms.RearPortTemplateImportForm,
'front-ports': forms.FrontPortTemplateImportForm, 'front-ports': forms.FrontPortTemplateImportForm,
'port-mappings': forms.PortTemplateMappingImportForm,
'module-bays': forms.ModuleBayTemplateImportForm, 'module-bays': forms.ModuleBayTemplateImportForm,
'device-bays': forms.DeviceBayTemplateImportForm, 'device-bays': forms.DeviceBayTemplateImportForm,
'inventory-items': forms.InventoryItemTemplateImportForm, 'inventory-items': forms.InventoryItemTemplateImportForm,
@ -1820,6 +1821,7 @@ class ModuleTypeImportView(generic.BulkImportView):
'interfaces': forms.InterfaceTemplateImportForm, 'interfaces': forms.InterfaceTemplateImportForm,
'rear-ports': forms.RearPortTemplateImportForm, 'rear-ports': forms.RearPortTemplateImportForm,
'front-ports': forms.FrontPortTemplateImportForm, 'front-ports': forms.FrontPortTemplateImportForm,
'port-mappings': forms.PortTemplateMappingImportForm,
'module-bays': forms.ModuleBayTemplateImportForm, 'module-bays': forms.ModuleBayTemplateImportForm,
} }