mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Allow interface mode to be null (for routed interfaces)
This commit is contained in:
parent
9a6a479452
commit
4a57a554da
@ -1632,11 +1632,10 @@ class PowerOutletBulkDisconnectForm(ConfirmationForm):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class InterfaceForm(BootstrapMixin, forms.ModelForm, ChainedFieldsMixin):
|
class InterfaceForm(BootstrapMixin, forms.ModelForm, ChainedFieldsMixin):
|
||||||
|
|
||||||
site = forms.ModelChoiceField(
|
site = forms.ModelChoiceField(
|
||||||
queryset=Site.objects.all(),
|
queryset=Site.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label='VLAN Site',
|
label='VLAN site',
|
||||||
widget=forms.Select(
|
widget=forms.Select(
|
||||||
attrs={'filter-for': 'vlan_group', 'nullable': 'true'},
|
attrs={'filter-for': 'vlan_group', 'nullable': 'true'},
|
||||||
)
|
)
|
||||||
@ -1681,8 +1680,8 @@ class InterfaceForm(BootstrapMixin, forms.ModelForm, ChainedFieldsMixin):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'form_factor', 'enabled', 'lag', 'mac_address', 'mtu', 'mgmt_only',
|
'device', 'name', 'form_factor', 'enabled', 'lag', 'mac_address', 'mtu', 'mgmt_only', 'description',
|
||||||
'description', 'mode', 'site', 'vlan_group', 'untagged_vlan', 'tagged_vlans',
|
'mode', 'site', 'vlan_group', 'untagged_vlan', 'tagged_vlans',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
@ -1738,7 +1737,7 @@ class InterfaceForm(BootstrapMixin, forms.ModelForm, ChainedFieldsMixin):
|
|||||||
|
|
||||||
def clean_tagged_vlans(self):
|
def clean_tagged_vlans(self):
|
||||||
"""
|
"""
|
||||||
Becasue tagged_vlans is a many-to-many relationship, validation must be done in the form
|
Because tagged_vlans is a many-to-many relationship, validation must be done in the form
|
||||||
"""
|
"""
|
||||||
if self.cleaned_data['mode'] == IFACE_MODE_ACCESS and self.cleaned_data['tagged_vlans']:
|
if self.cleaned_data['mode'] == IFACE_MODE_ACCESS and self.cleaned_data['tagged_vlans']:
|
||||||
raise forms.ValidationError(
|
raise forms.ValidationError(
|
||||||
|
@ -17,7 +17,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='interface',
|
model_name='interface',
|
||||||
name='mode',
|
name='mode',
|
||||||
field=models.PositiveSmallIntegerField(choices=[[100, 'Access'], [200, 'Tagged'], [300, 'Tagged All']], default=100),
|
field=models.PositiveSmallIntegerField(blank=True, choices=[[100, 'Access'], [200, 'Tagged'], [300, 'Tagged All']], null=True),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='interface',
|
model_name='interface',
|
||||||
|
@ -1308,7 +1308,11 @@ class Interface(models.Model):
|
|||||||
help_text="This interface is used only for out-of-band management"
|
help_text="This interface is used only for out-of-band management"
|
||||||
)
|
)
|
||||||
description = models.CharField(max_length=100, blank=True)
|
description = models.CharField(max_length=100, blank=True)
|
||||||
mode = models.PositiveSmallIntegerField(choices=IFACE_MODE_CHOICES, default=IFACE_MODE_ACCESS)
|
mode = models.PositiveSmallIntegerField(
|
||||||
|
choices=IFACE_MODE_CHOICES,
|
||||||
|
blank=True,
|
||||||
|
null=True
|
||||||
|
)
|
||||||
untagged_vlan = models.ForeignKey(
|
untagged_vlan = models.ForeignKey(
|
||||||
to='ipam.VLAN',
|
to='ipam.VLAN',
|
||||||
null=True,
|
null=True,
|
||||||
|
Loading…
Reference in New Issue
Block a user