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

Add WirelessLink model

This commit is contained in:
jeremystretch
2021-10-13 09:46:17 -04:00
parent 5271680483
commit 90e9f34494
21 changed files with 458 additions and 58 deletions

View File

@@ -4,9 +4,11 @@ from dcim.models import *
from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm
from ipam.models import VLAN
from utilities.forms import BootstrapMixin, DynamicModelChoiceField
from wireless.constants import SSID_MAX_LENGTH
__all__ = (
'WirelessLANBulkEditForm',
'WirelessLinkBulkEditForm',
)
@@ -19,11 +21,30 @@ class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode
queryset=VLAN.objects.all(),
required=False,
)
ssid = forms.CharField(
max_length=SSID_MAX_LENGTH,
required=False
)
description = forms.CharField(
required=False
)
class Meta:
nullable_fields = [
'vlan', 'description',
]
nullable_fields = ['vlan', 'ssid', 'description']
class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=PowerFeed.objects.all(),
widget=forms.MultipleHiddenInput
)
ssid = forms.CharField(
max_length=SSID_MAX_LENGTH,
required=False
)
description = forms.CharField(
required=False
)
class Meta:
nullable_fields = ['ssid', 'description']

View File

@@ -1,10 +1,12 @@
from dcim.models import Interface
from extras.forms import CustomFieldModelCSVForm
from ipam.models import VLAN
from utilities.forms import CSVModelChoiceField
from wireless.models import WirelessLAN
from wireless.models import *
__all__ = (
'WirelessLANCSVForm',
'WirelessLinkCSVForm',
)
@@ -18,3 +20,16 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm):
class Meta:
model = WirelessLAN
fields = ('ssid', 'description', 'vlan')
class WirelessLinkCSVForm(CustomFieldModelCSVForm):
interface_a = CSVModelChoiceField(
queryset=Interface.objects.all()
)
interface_b = CSVModelChoiceField(
queryset=Interface.objects.all()
)
class Meta:
model = WirelessLink
fields = ('interface_a', 'interface_b', 'ssid', 'description')

View File

@@ -3,7 +3,12 @@ from django.utils.translation import gettext as _
from extras.forms import CustomFieldModelFilterForm
from utilities.forms import BootstrapMixin, TagFilterField
from .models import WirelessLAN
from wireless.models import *
__all__ = (
'WirelessLANFilterForm',
'WirelessLinkFilterForm',
)
class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
@@ -16,4 +21,25 @@ class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
ssid = forms.CharField(
required=False,
label='SSID'
)
tag = TagFilterField(model)
class WirelessLinkFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = WirelessLink
field_groups = [
['q', 'tag'],
]
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
ssid = forms.CharField(
required=False,
label='SSID'
)
tag = TagFilterField(model)

View File

@@ -1,11 +1,13 @@
from dcim.models import Interface
from extras.forms import CustomFieldModelForm
from extras.models import Tag
from ipam.models import VLAN
from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField
from wireless.models import WirelessLAN
from wireless.models import *
__all__ = (
'WirelessLANForm',
'WirelessLinkForm',
)
@@ -28,3 +30,28 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm):
('Wireless LAN', ('ssid', 'description', 'tags')),
('VLAN', ('vlan',)),
)
class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
interface_a = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
'kind': 'wireless'
}
)
interface_b = DynamicModelChoiceField(
queryset=Interface.objects.all(),
query_params={
'kind': 'wireless'
}
)
tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta:
model = WirelessLink
fields = [
'interface_a', 'interface_b', 'ssid', 'description', 'tags',
]