| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- from django import forms
- from dcim.choices import InterfacePoEModeChoices, InterfacePoETypeChoices, InterfaceTypeChoices, PortTypeChoices
- from dcim.models import *
- from utilities.forms import BootstrapMixin
- __all__ = (
- 'ConsolePortTemplateImportForm',
- 'ConsoleServerPortTemplateImportForm',
- 'DeviceBayTemplateImportForm',
- 'DeviceTypeImportForm',
- 'FrontPortTemplateImportForm',
- 'InterfaceTemplateImportForm',
- 'InventoryItemTemplateImportForm',
- 'ModuleBayTemplateImportForm',
- 'ModuleTypeImportForm',
- 'PowerOutletTemplateImportForm',
- 'PowerPortTemplateImportForm',
- 'RearPortTemplateImportForm',
- )
- class DeviceTypeImportForm(BootstrapMixin, forms.ModelForm):
- manufacturer = forms.ModelChoiceField(
- queryset=Manufacturer.objects.all(),
- to_field_name='name'
- )
- class Meta:
- model = DeviceType
- fields = [
- 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow',
- 'description', 'comments',
- ]
- class ModuleTypeImportForm(BootstrapMixin, forms.ModelForm):
- manufacturer = forms.ModelChoiceField(
- queryset=Manufacturer.objects.all(),
- to_field_name='name'
- )
- class Meta:
- model = ModuleType
- fields = ['manufacturer', 'model', 'part_number', 'description', 'comments']
- #
- # Component template import forms
- #
- class ComponentTemplateImportForm(BootstrapMixin, forms.ModelForm):
- pass
- class ConsolePortTemplateImportForm(ComponentTemplateImportForm):
- class Meta:
- model = ConsolePortTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'label', 'type', 'description',
- ]
- class ConsoleServerPortTemplateImportForm(ComponentTemplateImportForm):
- class Meta:
- model = ConsoleServerPortTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'label', 'type', 'description',
- ]
- class PowerPortTemplateImportForm(ComponentTemplateImportForm):
- class Meta:
- model = PowerPortTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description',
- ]
- class PowerOutletTemplateImportForm(ComponentTemplateImportForm):
- power_port = forms.ModelChoiceField(
- queryset=PowerPortTemplate.objects.all(),
- to_field_name='name',
- required=False
- )
- class Meta:
- model = PowerOutletTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description',
- ]
- def clean_device_type(self):
- if device_type := self.cleaned_data['device_type']:
- power_port = self.fields['power_port']
- power_port.queryset = power_port.queryset.filter(device_type=device_type)
- return device_type
- def clean_module_type(self):
- if module_type := self.cleaned_data['module_type']:
- power_port = self.fields['power_port']
- power_port.queryset = power_port.queryset.filter(module_type=module_type)
- return module_type
- class InterfaceTemplateImportForm(ComponentTemplateImportForm):
- type = forms.ChoiceField(
- choices=InterfaceTypeChoices.CHOICES
- )
- poe_mode = forms.ChoiceField(
- choices=InterfacePoEModeChoices,
- required=False,
- label='PoE mode'
- )
- poe_type = forms.ChoiceField(
- choices=InterfacePoETypeChoices,
- required=False,
- label='PoE type'
- )
- class Meta:
- model = InterfaceTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'label', 'type', 'mgmt_only', 'description', 'poe_mode', 'poe_type',
- ]
- class FrontPortTemplateImportForm(ComponentTemplateImportForm):
- type = forms.ChoiceField(
- choices=PortTypeChoices.CHOICES
- )
- rear_port = forms.ModelChoiceField(
- queryset=RearPortTemplate.objects.all(),
- to_field_name='name'
- )
- def clean_device_type(self):
- if device_type := self.cleaned_data['device_type']:
- rear_port = self.fields['rear_port']
- rear_port.queryset = rear_port.queryset.filter(device_type=device_type)
- return device_type
- def clean_module_type(self):
- if module_type := self.cleaned_data['module_type']:
- rear_port = self.fields['rear_port']
- rear_port.queryset = rear_port.queryset.filter(module_type=module_type)
- return module_type
- class Meta:
- model = FrontPortTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'type', 'color', 'rear_port', 'rear_port_position', 'label', 'description',
- ]
- class RearPortTemplateImportForm(ComponentTemplateImportForm):
- type = forms.ChoiceField(
- choices=PortTypeChoices.CHOICES
- )
- class Meta:
- model = RearPortTemplate
- fields = [
- 'device_type', 'module_type', 'name', 'type', 'color', 'positions', 'label', 'description',
- ]
- class ModuleBayTemplateImportForm(ComponentTemplateImportForm):
- class Meta:
- model = ModuleBayTemplate
- fields = [
- 'device_type', 'name', 'label', 'position', 'description',
- ]
- class DeviceBayTemplateImportForm(ComponentTemplateImportForm):
- class Meta:
- model = DeviceBayTemplate
- fields = [
- 'device_type', 'name', 'label', 'description',
- ]
- class InventoryItemTemplateImportForm(ComponentTemplateImportForm):
- parent = forms.ModelChoiceField(
- queryset=InventoryItemTemplate.objects.all(),
- required=False
- )
- role = forms.ModelChoiceField(
- queryset=InventoryItemRole.objects.all(),
- to_field_name='name',
- required=False
- )
- manufacturer = forms.ModelChoiceField(
- queryset=Manufacturer.objects.all(),
- to_field_name='name',
- required=False
- )
- class Meta:
- model = InventoryItemTemplate
- fields = [
- 'device_type', 'parent', 'name', 'label', 'role', 'manufacturer', 'part_id', 'description',
- ]
- def clean_device_type(self):
- if device_type := self.cleaned_data['device_type']:
- parent = self.fields['parent']
- parent.queryset = parent.queryset.filter(device_type=device_type)
- return device_type
- def clean_module_type(self):
- if module_type := self.cleaned_data['module_type']:
- parent = self.fields['parent']
- parent.queryset = parent.queryset.filter(module_type=module_type)
- return module_type
|