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

184 lines
5.2 KiB
Python
Raw Normal View History

from django.forms import PasswordInput
from django.utils.translation import gettext_lazy as _
from dcim.models import Device, Interface, Location, Site
from ipam.models import VLAN
from netbox.forms import NetBoxModelForm
from tenancy.forms import TenancyForm
from utilities.forms.fields import CommentField, DynamicModelChoiceField, SlugField
2024-03-18 15:08:28 -04:00
from utilities.forms.rendering import FieldSet
2021-10-13 09:46:17 -04:00
from wireless.models import *
__all__ = (
2021-10-12 17:02:53 -04:00
'WirelessLANForm',
2021-10-13 16:40:12 -04:00
'WirelessLANGroupForm',
2021-10-13 09:46:17 -04:00
'WirelessLinkForm',
)
class WirelessLANGroupForm(NetBoxModelForm):
2021-10-13 16:40:12 -04:00
parent = DynamicModelChoiceField(
label=_('Parent'),
2021-10-13 16:40:12 -04:00
queryset=WirelessLANGroup.objects.all(),
required=False
)
slug = SlugField()
fieldsets = (
2024-03-18 15:08:28 -04:00
FieldSet('parent', 'name', 'slug', 'description', 'tags', name=_('Wireless LAN Group')),
)
2021-10-13 16:40:12 -04:00
class Meta:
model = WirelessLANGroup
fields = [
'parent', 'name', 'slug', 'description', 'tags',
2021-10-13 16:40:12 -04:00
]
class WirelessLANForm(TenancyForm, NetBoxModelForm):
2021-10-13 16:40:12 -04:00
group = DynamicModelChoiceField(
label=_('Group'),
2021-10-13 16:40:12 -04:00
queryset=WirelessLANGroup.objects.all(),
required=False
)
vlan = DynamicModelChoiceField(
queryset=VLAN.objects.all(),
2021-10-20 10:58:15 -04:00
required=False,
selector=True,
label=_('VLAN')
)
comments = CommentField()
fieldsets = (
2024-03-18 15:08:28 -04:00
FieldSet('ssid', 'group', 'vlan', 'status', 'description', 'tags', name=_('Wireless LAN')),
FieldSet('tenant_group', 'tenant', name=_('Tenancy')),
FieldSet('auth_type', 'auth_cipher', 'auth_psk', name=_('Authentication')),
)
class Meta:
2021-10-12 17:02:53 -04:00
model = WirelessLAN
fields = [
'ssid', 'group', 'status', 'vlan', 'tenant_group', 'tenant', 'auth_type', 'auth_cipher', 'auth_psk',
'description', 'comments', 'tags',
]
2021-10-20 10:58:15 -04:00
widgets = {
'auth_psk': PasswordInput(
render_value=True,
attrs={'data-toggle': 'password'}
),
2021-10-20 10:58:15 -04:00
}
2021-10-13 09:46:17 -04:00
class WirelessLinkForm(TenancyForm, NetBoxModelForm):
2021-10-21 14:11:11 -04:00
site_a = DynamicModelChoiceField(
queryset=Site.objects.all(),
required=False,
label=_('Site'),
2021-10-21 14:11:11 -04:00
initial_params={
'devices': '$device_a',
}
)
location_a = DynamicModelChoiceField(
queryset=Location.objects.all(),
query_params={
'site_id': '$site_a',
},
2021-10-21 14:11:11 -04:00
required=False,
label=_('Location'),
2021-10-21 14:11:11 -04:00
initial_params={
'devices': '$device_a',
}
)
2021-10-14 10:02:05 -04:00
device_a = DynamicModelChoiceField(
queryset=Device.objects.all(),
2021-10-21 14:11:11 -04:00
query_params={
'site_id': '$site_a',
'location_id': '$location_a',
},
2021-10-20 13:34:39 -04:00
required=False,
label=_('Device'),
initial_params={
'interfaces': '$interface_a'
}
2021-10-14 10:02:05 -04:00
)
2021-10-13 09:46:17 -04:00
interface_a = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
2021-10-14 10:02:05 -04:00
'kind': 'wireless',
'device_id': '$device_a',
},
context={
'disabled': '_occupied',
},
label=_('Interface')
2021-10-21 14:11:11 -04:00
)
site_b = DynamicModelChoiceField(
queryset=Site.objects.all(),
required=False,
label=_('Site'),
2021-10-21 14:11:11 -04:00
initial_params={
'devices': '$device_b',
}
)
location_b = DynamicModelChoiceField(
queryset=Location.objects.all(),
query_params={
'site_id': '$site_b',
},
2021-10-21 14:11:11 -04:00
required=False,
label=_('Location'),
2021-10-21 14:11:11 -04:00
initial_params={
'devices': '$device_b',
}
2021-10-13 09:46:17 -04:00
)
2021-10-14 10:02:05 -04:00
device_b = DynamicModelChoiceField(
queryset=Device.objects.all(),
2021-10-21 14:11:11 -04:00
query_params={
'site_id': '$site_b',
'location_id': '$location_b',
},
2021-10-20 13:34:39 -04:00
required=False,
label=_('Device'),
initial_params={
'interfaces': '$interface_b'
}
2021-10-14 10:02:05 -04:00
)
2021-10-13 09:46:17 -04:00
interface_b = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
2021-10-14 10:02:05 -04:00
'kind': 'wireless',
'device_id': '$device_b',
},
context={
'disabled': '_occupied',
},
label=_('Interface')
2021-10-13 09:46:17 -04:00
)
comments = CommentField()
2021-10-13 09:46:17 -04:00
fieldsets = (
2024-03-18 15:08:28 -04:00
FieldSet('site_a', 'location_a', 'device_a', 'interface_a', name=_('Side A')),
FieldSet('site_b', 'location_b', 'device_b', 'interface_b', name=_('Side B')),
FieldSet('status', 'ssid', 'description', 'tags', name=_('Link')),
FieldSet('tenant_group', 'tenant', name=_('Tenancy')),
FieldSet('auth_type', 'auth_cipher', 'auth_psk', name=_('Authentication')),
)
2021-10-13 09:46:17 -04:00
class Meta:
model = WirelessLink
fields = [
2021-10-21 14:11:11 -04:00
'site_a', 'location_a', 'device_a', 'interface_a', 'site_b', 'location_b', 'device_b', 'interface_b',
'status', 'ssid', 'tenant_group', 'tenant', 'auth_type', 'auth_cipher', 'auth_psk', 'description',
'comments', 'tags',
2021-10-13 09:46:17 -04:00
]
2021-10-13 14:31:30 -04:00
widgets = {
'auth_psk': PasswordInput(
render_value=True,
attrs={'data-toggle': 'password'}
),
2021-10-13 14:31:30 -04:00
}
2021-10-21 14:11:11 -04:00
labels = {
'auth_type': 'Type',
'auth_cipher': 'Cipher',
}