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

Merge branch 'develop' into 2921-tags-select2

This commit is contained in:
Jeremy Stretch
2020-02-04 09:37:31 -05:00
committed by GitHub
49 changed files with 2290 additions and 1546 deletions

View File

@ -13,7 +13,8 @@ from timezone_field import TimeZoneFormField
from circuits.models import Circuit, Provider
from extras.forms import (
AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm, LocalConfigContextFilterForm
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldFilterForm, CustomFieldModelForm,
LocalConfigContextFilterForm,
)
from ipam.constants import BGP_ASN_MAX, BGP_ASN_MIN
from ipam.models import IPAddress, VLAN
@ -216,7 +217,7 @@ class RegionFilterForm(BootstrapMixin, forms.Form):
# Sites
#
class SiteForm(BootstrapMixin, TenancyForm, CustomFieldForm):
class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
region = TreeNodeChoiceField(
queryset=Region.objects.all(),
required=False,
@ -264,7 +265,7 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldForm):
}
class SiteCSVForm(forms.ModelForm):
class SiteCSVForm(CustomFieldModelCSVForm):
status = CSVChoiceField(
choices=SiteStatusChoices,
required=False,
@ -461,7 +462,7 @@ class RackRoleCSVForm(forms.ModelForm):
# Racks
#
class RackForm(BootstrapMixin, TenancyForm, CustomFieldForm):
class RackForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
group = ChainedModelChoiceField(
queryset=RackGroup.objects.all(),
chains=(
@ -506,7 +507,7 @@ class RackForm(BootstrapMixin, TenancyForm, CustomFieldForm):
}
class RackCSVForm(forms.ModelForm):
class RackCSVForm(CustomFieldModelCSVForm):
site = forms.ModelChoiceField(
queryset=Site.objects.all(),
to_field_name='name',
@ -900,7 +901,7 @@ class ManufacturerCSVForm(forms.ModelForm):
# Device types
#
class DeviceTypeForm(BootstrapMixin, CustomFieldForm):
class DeviceTypeForm(BootstrapMixin, CustomFieldModelForm):
slug = SlugField(
slug_source='model'
)
@ -1520,7 +1521,7 @@ class PlatformCSVForm(forms.ModelForm):
# Devices
#
class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm):
class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
site = forms.ModelChoiceField(
queryset=Site.objects.all(),
widget=APISelect(
@ -1552,6 +1553,7 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm):
)
manufacturer = forms.ModelChoiceField(
queryset=Manufacturer.objects.all(),
required=False,
widget=APISelect(
api_url="/api/dcim/manufacturers/",
filter_for={
@ -1728,7 +1730,7 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm):
self.initial['rack'] = self.instance.parent_bay.device.rack_id
class BaseDeviceCSVForm(forms.ModelForm):
class BaseDeviceCSVForm(CustomFieldModelCSVForm):
device_role = forms.ModelChoiceField(
queryset=DeviceRole.objects.all(),
to_field_name='name',
@ -2736,7 +2738,7 @@ class InterfaceCSVForm(forms.ModelForm):
super().__init__(*args, **kwargs)
# Limit LAG choices to interfaces belonging to this device (or VC master)
if self.is_bound:
if self.is_bound and 'device' in self.data:
try:
device = self.fields['device'].to_python(self.data['device'])
except forms.ValidationError:
@ -4256,7 +4258,7 @@ class PowerPanelFilterForm(BootstrapMixin, CustomFieldFilterForm):
# Power feeds
#
class PowerFeedForm(BootstrapMixin, CustomFieldForm):
class PowerFeedForm(BootstrapMixin, CustomFieldModelForm):
site = ChainedModelChoiceField(
queryset=Site.objects.all(),
required=False,
@ -4301,7 +4303,7 @@ class PowerFeedForm(BootstrapMixin, CustomFieldForm):
self.initial['site'] = self.instance.power_panel.site
class PowerFeedCSVForm(forms.ModelForm):
class PowerFeedCSVForm(CustomFieldModelCSVForm):
site = forms.ModelChoiceField(
queryset=Site.objects.all(),
to_field_name='name',
@ -4384,7 +4386,7 @@ class PowerFeedBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEd
queryset=PowerFeed.objects.all(),
widget=forms.MultipleHiddenInput
)
powerpanel = forms.ModelChoiceField(
power_panel = forms.ModelChoiceField(
queryset=PowerPanel.objects.all(),
required=False,
widget=APISelect(