Add devices to WirelessLinkForm

This commit is contained in:
jeremystretch 2021-10-14 10:02:05 -04:00
parent bdf359470e
commit fb9da87abb
3 changed files with 32 additions and 6 deletions

View File

@ -656,6 +656,10 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint):
"device, or it must be global".format(self.untagged_vlan)
})
@property
def _occupied(self):
return super()._occupied or bool(self.wireless_link_id)
@property
def is_wired(self):
return not self.is_virtual and not self.is_wireless

View File

@ -1,4 +1,4 @@
from dcim.models import Interface
from dcim.models import Device, Interface
from extras.forms import CustomFieldModelForm
from extras.models import Tag
from ipam.models import VLAN
@ -54,18 +54,30 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm):
class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
device_a = DynamicModelChoiceField(
queryset=Device.objects.all(),
label='Device A'
)
interface_a = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
'kind': 'wireless'
'kind': 'wireless',
'device_id': '$device_a',
},
disabled_indicator='_occupied',
label='Interface A'
)
device_b = DynamicModelChoiceField(
queryset=Device.objects.all(),
label='Device B'
)
interface_b = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
'kind': 'wireless'
'kind': 'wireless',
'device_id': '$device_b',
},
disabled_indicator='_occupied',
label='Interface B'
)
tags = DynamicModelMultipleChoiceField(
@ -76,7 +88,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
class Meta:
model = WirelessLink
fields = [
'interface_a', 'interface_b', 'status', 'ssid', 'description', 'tags',
'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags',
]
widgets = {
'status': StaticSelect,

View File

@ -74,9 +74,17 @@ class WirelessLinkTable(BaseTable):
verbose_name='ID'
)
status = ChoiceFieldColumn()
device_a = tables.Column(
accessor=tables.A('interface_a__device'),
linkify=True
)
interface_a = tables.Column(
linkify=True
)
device_b = tables.Column(
accessor=tables.A('interface_b__device'),
linkify=True
)
interface_b = tables.Column(
linkify=True
)
@ -86,5 +94,7 @@ class WirelessLinkTable(BaseTable):
class Meta(BaseTable.Meta):
model = WirelessLink
fields = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description')
default_columns = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description')
fields = ('pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description')
default_columns = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description',
)