1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Initial work on JSON/YAML-based DeviceType import

This commit is contained in:
Jeremy Stretch
2019-09-05 17:23:56 -04:00
parent 2ce0ff505a
commit f8fdca4968
10 changed files with 202 additions and 39 deletions

View File

@ -22,7 +22,8 @@ from utilities.forms import (
APISelect, APISelectMultiple, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
BulkEditNullBooleanSelect, ChainedFieldsMixin, ChainedModelChoiceField, ColorSelect, CommentField, ComponentForm,
ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, FlexibleModelChoiceField, JSONField,
SelectWithPK, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple, BOOLEAN_WITH_BLANK_CHOICES
SelectWithPK, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple, MultiObjectField,
BOOLEAN_WITH_BLANK_CHOICES,
)
from virtualization.models import Cluster, ClusterGroup
from .constants import *
@ -831,6 +832,36 @@ class DeviceTypeCSVForm(forms.ModelForm):
}
class InterfaceTemplateImportForm(BootstrapMixin, forms.ModelForm):
name_pattern = ExpandableNameField(
label='Name'
)
class Meta:
model = InterfaceTemplate
fields = [
'type', 'mgmt_only',
]
class DeviceTypeImportForm(forms.ModelForm):
manufacturer = forms.ModelChoiceField(
queryset=Manufacturer.objects.all(),
to_field_name='name'
)
interfaces = MultiObjectField(
form=InterfaceTemplateImportForm,
required=False
)
class Meta:
model = DeviceType
fields = [
'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role',
'interfaces',
]
class DeviceTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=DeviceType.objects.all(),