diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py
index 2a6dc1f6f..cd697e9f3 100644
--- a/netbox/dcim/forms/models.py
+++ b/netbox/dcim/forms/models.py
@@ -16,7 +16,7 @@ from utilities.forms import (
SlugField, StaticSelect,
)
from virtualization.models import Cluster, ClusterGroup
-from wireless.models import SSID
+from wireless.models import WirelessLAN
from .common import InterfaceCommonForm
__all__ = (
@@ -1069,10 +1069,10 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm):
'type': 'lag',
}
)
- ssids = DynamicModelMultipleChoiceField(
- queryset=SSID.objects.all(),
+ wireless_lans = DynamicModelMultipleChoiceField(
+ queryset=WirelessLAN.objects.all(),
required=False,
- label='SSIDs'
+ label='Wireless LANs'
)
vlan_group = DynamicModelChoiceField(
queryset=VLANGroup.objects.all(),
@@ -1104,7 +1104,7 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm):
model = Interface
fields = [
'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only',
- 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'ssids', 'untagged_vlan',
+ 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'wireless_lans', 'untagged_vlan',
'tagged_vlans', 'tags',
]
widgets = {
diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py
index 0a1d15365..108e63802 100644
--- a/netbox/dcim/migrations/0136_wireless.py
+++ b/netbox/dcim/migrations/0136_wireless.py
@@ -4,7 +4,7 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
- ('wireless', '__first__'),
+ ('wireless', '0001_initial'),
('dcim', '0135_location_tenant'),
]
@@ -21,7 +21,7 @@ class Migration(migrations.Migration):
),
migrations.AddField(
model_name='interface',
- name='ssids',
- field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.SSID'),
+ name='wireless_lans',
+ field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.WirelessLAN'),
),
]
diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py
index 5e3e7e6db..60eb4c368 100644
--- a/netbox/dcim/models/device_components.py
+++ b/netbox/dcim/models/device_components.py
@@ -529,11 +529,11 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint):
null=True,
verbose_name='Channel width'
)
- ssids = models.ManyToManyField(
- to='wireless.SSID',
+ wireless_lans = models.ManyToManyField(
+ to='wireless.WirelessLAN',
related_name='interfaces',
blank=True,
- verbose_name='SSIDs'
+ verbose_name='Wireless LANs'
)
untagged_vlan = models.ForeignKey(
to='ipam.VLAN',
diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py
index 0a78f35ab..073189d31 100644
--- a/netbox/netbox/navigation_menu.py
+++ b/netbox/netbox/navigation_menu.py
@@ -195,7 +195,7 @@ WIRELESS_MENU = Menu(
MenuGroup(
label='Wireless',
items=(
- get_model_item('wireless', 'ssid', 'SSIDs'),
+ get_model_item('wireless', 'wirelesslan', 'Wireless LANs'),
),
),
),
diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html
index bc4fc23e2..33eaa95db 100644
--- a/netbox/templates/dcim/interface.html
+++ b/netbox/templates/dcim/interface.html
@@ -260,19 +260,19 @@
{% endif %}
{% if object.is_wireless %}
-
+
- Name |
+ SSID |
- {% for ssid in object.ssids.all %}
+ {% for wlan in object.wlans.all %}
- {{ ssid.name }}
+ {{ wlan.ssid }}
|
{% empty %}
diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html
index 9fc752432..51834f4e2 100644
--- a/netbox/templates/dcim/interface_edit.html
+++ b/netbox/templates/dcim/interface_edit.html
@@ -36,7 +36,7 @@
{% render_field form.rf_channel %}
{% render_field form.rf_channel_width %}
- {% render_field form.ssids %}
+ {% render_field form.wireless_lans %}
{% endif %}
diff --git a/netbox/templates/wireless/ssid.html b/netbox/templates/wireless/wirelesslan.html
similarity index 90%
rename from netbox/templates/wireless/ssid.html
rename to netbox/templates/wireless/wirelesslan.html
index 5425149aa..98bde8688 100644
--- a/netbox/templates/wireless/ssid.html
+++ b/netbox/templates/wireless/wirelesslan.html
@@ -6,12 +6,12 @@
-
+
- Name |
- {{ object.name }} |
+ SSID |
+ {{ object.ssid }} |
Description |
diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py
index 50454a641..e290653a2 100644
--- a/netbox/wireless/api/nested_serializers.py
+++ b/netbox/wireless/api/nested_serializers.py
@@ -4,13 +4,13 @@ from netbox.api import WritableNestedSerializer
from wireless.models import *
__all__ = (
- 'NestedSSIDSerializer',
+ 'NestedWirelessLANSerializer',
)
-class NestedSSIDSerializer(WritableNestedSerializer):
+class NestedWirelessLANSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail')
class Meta:
- model = SSID
- fields = ['id', 'url', 'display', 'name']
+ model = WirelessLAN
+ fields = ['id', 'url', 'display', 'ssid']
diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py
index c129e5c96..08642259f 100644
--- a/netbox/wireless/api/serializers.py
+++ b/netbox/wireless/api/serializers.py
@@ -1,21 +1,20 @@
from rest_framework import serializers
-from dcim.api.serializers import NestedInterfaceSerializer
from ipam.api.serializers import NestedVLANSerializer
from netbox.api.serializers import PrimaryModelSerializer
from wireless.models import *
__all__ = (
- 'SSIDSerializer',
+ 'WirelessLANSerializer',
)
-class SSIDSerializer(PrimaryModelSerializer):
+class WirelessLANSerializer(PrimaryModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail')
vlan = NestedVLANSerializer(required=False, allow_null=True)
class Meta:
- model = SSID
+ model = WirelessLAN
fields = [
- 'id', 'url', 'display', 'name', 'description', 'vlan',
+ 'id', 'url', 'display', 'ssid', 'description', 'vlan',
]
diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py
index f6936708c..638f31bbf 100644
--- a/netbox/wireless/api/urls.py
+++ b/netbox/wireless/api/urls.py
@@ -5,8 +5,7 @@ from . import views
router = OrderedDefaultRouter()
router.APIRootView = views.WirelessRootView
-# SSIDs
-router.register('ssids', views.SSIDViewSet)
+router.register('wireless-lans', views.WirelessLANViewSet)
app_name = 'wireless-api'
urlpatterns = router.urls
diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py
index 97827eb7e..a09b2e23d 100644
--- a/netbox/wireless/api/views.py
+++ b/netbox/wireless/api/views.py
@@ -18,7 +18,7 @@ class WirelessRootView(APIRootView):
# Providers
#
-class SSIDViewSet(CustomFieldModelViewSet):
- queryset = SSID.objects.prefetch_related('tags')
- serializer_class = serializers.SSIDSerializer
- filterset_class = filtersets.SSIDFilterSet
+class WirelessLANViewSet(CustomFieldModelViewSet):
+ queryset = WirelessLAN.objects.prefetch_related('tags')
+ serializer_class = serializers.WirelessLANSerializer
+ filterset_class = filtersets.WirelessLANFilterSet
diff --git a/netbox/wireless/constants.py b/netbox/wireless/constants.py
new file mode 100644
index 000000000..188c4abd9
--- /dev/null
+++ b/netbox/wireless/constants.py
@@ -0,0 +1 @@
+SSID_MAX_LENGTH = 32 # Per IEEE 802.11-2007
diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py
index 232bc74ff..c148354a0 100644
--- a/netbox/wireless/filtersets.py
+++ b/netbox/wireless/filtersets.py
@@ -6,11 +6,11 @@ from netbox.filtersets import PrimaryModelFilterSet
from .models import *
__all__ = (
- 'SSIDFilterSet',
+ 'WirelessLANFilterSet',
)
-class SSIDFilterSet(PrimaryModelFilterSet):
+class WirelessLANFilterSet(PrimaryModelFilterSet):
q = django_filters.CharFilter(
method='search',
label='Search',
@@ -18,14 +18,14 @@ class SSIDFilterSet(PrimaryModelFilterSet):
tag = TagFilter()
class Meta:
- model = SSID
- fields = ['id', 'name']
+ model = WirelessLAN
+ fields = ['id', 'ssid']
def search(self, queryset, name, value):
if not value.strip():
return queryset
qs_filter = (
- Q(name__icontains=value) |
+ Q(ssid__icontains=value) |
Q(description__icontains=value)
)
return queryset.filter(qs_filter)
diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py
index ed9fb650b..c11a16239 100644
--- a/netbox/wireless/forms/bulk_edit.py
+++ b/netbox/wireless/forms/bulk_edit.py
@@ -6,11 +6,11 @@ from ipam.models import VLAN
from utilities.forms import BootstrapMixin, DynamicModelChoiceField
__all__ = (
- 'SSIDBulkEditForm',
+ 'WirelessLANBulkEditForm',
)
-class SSIDBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm):
+class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=PowerFeed.objects.all(),
widget=forms.MultipleHiddenInput
diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py
index 0cf997fd3..5dc07f91a 100644
--- a/netbox/wireless/forms/bulk_import.py
+++ b/netbox/wireless/forms/bulk_import.py
@@ -1,14 +1,14 @@
from extras.forms import CustomFieldModelCSVForm
from ipam.models import VLAN
from utilities.forms import CSVModelChoiceField
-from wireless.models import SSID
+from wireless.models import WirelessLAN
__all__ = (
- 'SSIDCSVForm',
+ 'WirelessLANCSVForm',
)
-class SSIDCSVForm(CustomFieldModelCSVForm):
+class WirelessLANCSVForm(CustomFieldModelCSVForm):
vlan = CSVModelChoiceField(
queryset=VLAN.objects.all(),
to_field_name='name',
@@ -16,5 +16,5 @@ class SSIDCSVForm(CustomFieldModelCSVForm):
)
class Meta:
- model = SSID
- fields = ('name', 'description', 'vlan')
+ model = WirelessLAN
+ fields = ('ssid', 'description', 'vlan')
diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py
index 733b807f7..99e38918e 100644
--- a/netbox/wireless/forms/filtersets.py
+++ b/netbox/wireless/forms/filtersets.py
@@ -1,13 +1,13 @@
from django import forms
from django.utils.translation import gettext as _
-from dcim.models import *
from extras.forms import CustomFieldModelFilterForm
from utilities.forms import BootstrapMixin, TagFilterField
+from .models import WirelessLAN
-class SSIDFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
- model = PowerFeed
+class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
+ model = WirelessLAN
field_groups = [
['q', 'tag'],
]
diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py
index ea6d51223..95b43c7d3 100644
--- a/netbox/wireless/forms/models.py
+++ b/netbox/wireless/forms/models.py
@@ -1,17 +1,15 @@
-from dcim.constants import *
-from dcim.models import *
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 SSID
+from wireless.models import WirelessLAN
__all__ = (
- 'SSIDForm',
+ 'WirelessLANForm',
)
-class SSIDForm(BootstrapMixin, CustomFieldModelForm):
+class WirelessLANForm(BootstrapMixin, CustomFieldModelForm):
vlan = DynamicModelChoiceField(
queryset=VLAN.objects.all(),
required=False
@@ -22,11 +20,11 @@ class SSIDForm(BootstrapMixin, CustomFieldModelForm):
)
class Meta:
- model = SSID
+ model = WirelessLAN
fields = [
- 'name', 'description', 'vlan', 'tags',
+ 'ssid', 'description', 'vlan', 'tags',
]
fieldsets = (
- ('SSID', ('name', 'description', 'tags')),
+ ('Wireless LAN', ('ssid', 'description', 'tags')),
('VLAN', ('vlan',)),
)
diff --git a/netbox/wireless/graphql/schema.py b/netbox/wireless/graphql/schema.py
index d0beec7d9..8297f4545 100644
--- a/netbox/wireless/graphql/schema.py
+++ b/netbox/wireless/graphql/schema.py
@@ -5,5 +5,5 @@ from .types import *
class WirelessQuery(graphene.ObjectType):
- ssid = ObjectField(SSIDType)
- ssid_list = ObjectListField(SSIDType)
+ wirelesslan = ObjectField(WirelessLANType)
+ wirelesslan_list = ObjectListField(WirelessLANType)
diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py
index 66e73429d..4cdb75ebe 100644
--- a/netbox/wireless/graphql/types.py
+++ b/netbox/wireless/graphql/types.py
@@ -2,13 +2,13 @@ from wireless import filtersets, models
from netbox.graphql.types import ObjectType
__all__ = (
- 'SSIDType',
+ 'WirelessLANType',
)
-class SSIDType(ObjectType):
+class WirelessLANType(ObjectType):
class Meta:
- model = models.SSID
+ model = models.WirelessLAN
fields = '__all__'
- filterset_class = filtersets.SSIDFilterSet
+ filterset_class = filtersets.WirelessLANFilterSet
diff --git a/netbox/wireless/migrations/0001_initial.py b/netbox/wireless/migrations/0001_initial.py
index 78d1dfc73..c93a17190 100644
--- a/netbox/wireless/migrations/0001_initial.py
+++ b/netbox/wireless/migrations/0001_initial.py
@@ -9,27 +9,26 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- ('extras', '0062_clear_secrets_changelog'),
('ipam', '0050_iprange'),
+ ('extras', '0062_clear_secrets_changelog'),
]
operations = [
migrations.CreateModel(
- name='SSID',
+ name='WirelessLAN',
fields=[
('created', models.DateField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)),
('id', models.BigAutoField(primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=32)),
+ ('ssid', models.CharField(max_length=32)),
('description', models.CharField(blank=True, max_length=200)),
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')),
],
options={
- 'verbose_name': 'SSID',
- 'verbose_name_plural': 'SSIDs',
- 'ordering': ('name', 'pk'),
+ 'verbose_name': 'Wireless LAN',
+ 'ordering': ('ssid', 'pk'),
},
),
]
diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py
index 2bdcecd79..363631ef5 100644
--- a/netbox/wireless/models.py
+++ b/netbox/wireless/models.py
@@ -1,25 +1,23 @@
+from django.core.exceptions import ValidationError
from django.db import models
from django.urls import reverse
+from dcim.constants import WIRELESS_IFACE_TYPES
from extras.utils import extras_features
from netbox.models import BigIDModel, PrimaryModel
from utilities.querysets import RestrictedQuerySet
__all__ = (
- 'SSID',
+ 'WirelessLAN',
)
-#
-# SSIDs
-#
-
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
-class SSID(PrimaryModel):
+class WirelessLAN(PrimaryModel):
"""
A service set identifier belonging to a wireless network.
"""
- name = models.CharField(
+ ssid = models.CharField(
max_length=32
)
vlan = models.ForeignKey(
@@ -37,12 +35,11 @@ class SSID(PrimaryModel):
objects = RestrictedQuerySet.as_manager()
class Meta:
- ordering = ('name', 'pk')
- verbose_name = 'SSID'
- verbose_name_plural = 'SSIDs'
+ ordering = ('ssid', 'pk')
+ verbose_name = 'Wireless LAN'
def __str__(self):
- return self.name
+ return self.ssid
def get_absolute_url(self):
return reverse('wireless:ssid', args=[self.pk])
diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py
index 9d3705549..133353f57 100644
--- a/netbox/wireless/tables.py
+++ b/netbox/wireless/tables.py
@@ -1,23 +1,23 @@
import django_tables2 as tables
-from .models import SSID
+from .models import WirelessLAN
from utilities.tables import BaseTable, TagColumn, ToggleColumn
__all__ = (
- 'SSIDTable',
+ 'WirelessLANTable',
)
-class SSIDTable(BaseTable):
+class WirelessLANTable(BaseTable):
pk = ToggleColumn()
- name = tables.Column(
+ ssid = tables.Column(
linkify=True
)
tags = TagColumn(
- url_name='dcim:cable_list'
+ url_name='wireless:wirelesslan_list'
)
class Meta(BaseTable.Meta):
- model = SSID
- fields = ('pk', 'name', 'description', 'vlan')
- default_columns = ('pk', 'name', 'description', 'vlan')
+ model = WirelessLAN
+ fields = ('pk', 'ssid', 'description', 'vlan')
+ default_columns = ('pk', 'ssid', 'description', 'vlan')
diff --git a/netbox/wireless/urls.py b/netbox/wireless/urls.py
index 57e0eab9b..c30ca472c 100644
--- a/netbox/wireless/urls.py
+++ b/netbox/wireless/urls.py
@@ -7,16 +7,16 @@ from .models import *
app_name = 'wireless'
urlpatterns = (
- # SSIDs
- path('ssids/', views.SSIDListView.as_view(), name='ssid_list'),
- path('ssids/add/', views.SSIDEditView.as_view(), name='ssid_add'),
- path('ssids/import/', views.SSIDBulkImportView.as_view(), name='ssid_import'),
- path('ssids/edit/', views.SSIDBulkEditView.as_view(), name='ssid_bulk_edit'),
- path('ssids/delete/', views.SSIDBulkDeleteView.as_view(), name='ssid_bulk_delete'),
- path('ssids//', views.SSIDView.as_view(), name='ssid'),
- path('ssids//edit/', views.SSIDEditView.as_view(), name='ssid_edit'),
- path('ssids//delete/', views.SSIDDeleteView.as_view(), name='ssid_delete'),
- path('ssids//changelog/', ObjectChangeLogView.as_view(), name='ssid_changelog', kwargs={'model': SSID}),
- path('ssids//journal/', ObjectJournalView.as_view(), name='ssid_journal', kwargs={'model': SSID}),
+ # Wireless LANs
+ path('wireless-lans/', views.WirelessLANListView.as_view(), name='wirelesslan_list'),
+ path('wireless-lans/add/', views.WirelessLANEditView.as_view(), name='wirelesslan_add'),
+ path('wireless-lans/import/', views.WirelessLANBulkImportView.as_view(), name='wirelesslan_import'),
+ path('wireless-lans/edit/', views.WirelessLANBulkEditView.as_view(), name='wirelesslan_bulk_edit'),
+ path('wireless-lans/delete/', views.WirelessLANBulkDeleteView.as_view(), name='wirelesslan_bulk_delete'),
+ path('wireless-lans//', views.WirelessLANView.as_view(), name='wirelesslan'),
+ path('wireless-lans//edit/', views.WirelessLANEditView.as_view(), name='wirelesslan_edit'),
+ path('wireless-lans//delete/', views.WirelessLANDeleteView.as_view(), name='wirelesslan_delete'),
+ path('wireless-lans//changelog/', ObjectChangeLogView.as_view(), name='wirelesslan_changelog', kwargs={'model': WirelessLAN}),
+ path('wireless-lans//journal/', ObjectJournalView.as_view(), name='wirelesslan_journal', kwargs={'model': WirelessLAN}),
)
diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py
index b741330b7..6e1c0b1b7 100644
--- a/netbox/wireless/views.py
+++ b/netbox/wireless/views.py
@@ -4,43 +4,43 @@ from .models import *
#
-# SSIDs
+# Wireless LANs
#
-class SSIDListView(generic.ObjectListView):
- queryset = SSID.objects.all()
- filterset = filtersets.SSIDFilterSet
- filterset_form = forms.SSIDFilterForm
- table = tables.SSIDTable
+class WirelessLANListView(generic.ObjectListView):
+ queryset = WirelessLAN.objects.all()
+ filterset = filtersets.WirelessLANFilterSet
+ filterset_form = forms.WirelessLANFilterForm
+ table = tables.WirelessLANTable
-class SSIDView(generic.ObjectView):
- queryset = SSID.objects.all()
+class WirelessLANView(generic.ObjectView):
+ queryset = WirelessLAN.objects.all()
-class SSIDEditView(generic.ObjectEditView):
- queryset = SSID.objects.all()
- model_form = forms.SSIDForm
+class WirelessLANEditView(generic.ObjectEditView):
+ queryset = WirelessLAN.objects.all()
+ model_form = forms.WirelessLANForm
-class SSIDDeleteView(generic.ObjectDeleteView):
- queryset = SSID.objects.all()
+class WirelessLANDeleteView(generic.ObjectDeleteView):
+ queryset = WirelessLAN.objects.all()
-class SSIDBulkImportView(generic.BulkImportView):
- queryset = SSID.objects.all()
- model_form = forms.SSIDCSVForm
- table = tables.SSIDTable
+class WirelessLANBulkImportView(generic.BulkImportView):
+ queryset = WirelessLAN.objects.all()
+ model_form = forms.WirelessLANCSVForm
+ table = tables.WirelessLANTable
-class SSIDBulkEditView(generic.BulkEditView):
- queryset = SSID.objects.all()
- filterset = filtersets.SSIDFilterSet
- table = tables.SSIDTable
- form = forms.SSIDBulkEditForm
+class WirelessLANBulkEditView(generic.BulkEditView):
+ queryset = WirelessLAN.objects.all()
+ filterset = filtersets.WirelessLANFilterSet
+ table = tables.WirelessLANTable
+ form = forms.WirelessLANBulkEditForm
-class SSIDBulkDeleteView(generic.BulkDeleteView):
- queryset = SSID.objects.all()
- filterset = filtersets.SSIDFilterSet
- table = tables.SSIDTable
+class WirelessLANBulkDeleteView(generic.BulkDeleteView):
+ queryset = WirelessLAN.objects.all()
+ filterset = filtersets.WirelessLANFilterSet
+ table = tables.WirelessLANTable