diff --git a/netbox/templates/wireless/wirelesslan.html b/netbox/templates/wireless/wirelesslan.html
index f2133cd54..cfe13ca45 100644
--- a/netbox/templates/wireless/wirelesslan.html
+++ b/netbox/templates/wireless/wirelesslan.html
@@ -49,8 +49,15 @@
-
- {% plugin_full_width_page object %}
+
+
+
+
+ {% include 'inc/table.html' with table=interfaces_table %}
+
+ {% include 'inc/paginator.html' with paginator=interfaces_table.paginator page=interfaces_table.page %}
+ {% plugin_full_width_page object %}
+
{% endblock %}
diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py
index 12c4e55aa..b0cacde15 100644
--- a/netbox/wireless/models.py
+++ b/netbox/wireless/models.py
@@ -145,7 +145,7 @@ class WirelessLink(PrimaryModel):
objects = RestrictedQuerySet.as_manager()
- clone_fields = ('ssid', 'group', 'status')
+ clone_fields = ('ssid', 'status')
class Meta:
ordering = ['pk']
diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py
index 58d77b56f..671e948d2 100644
--- a/netbox/wireless/tables.py
+++ b/netbox/wireless/tables.py
@@ -1,5 +1,6 @@
import django_tables2 as tables
+from dcim.models import Interface
from utilities.tables import (
BaseTable, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn,
)
@@ -35,14 +36,35 @@ class WirelessLANTable(BaseTable):
ssid = tables.Column(
linkify=True
)
+ group = tables.Column(
+ linkify=True
+ )
+ interface_count = tables.Column(
+ verbose_name='Interfaces'
+ )
tags = TagColumn(
url_name='wireless:wirelesslan_list'
)
class Meta(BaseTable.Meta):
model = WirelessLAN
- fields = ('pk', 'ssid', 'description', 'vlan')
- default_columns = ('pk', 'ssid', 'description', 'vlan')
+ fields = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'tags')
+ default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count')
+
+
+class WirelessLANInterfacesTable(BaseTable):
+ pk = ToggleColumn()
+ device = tables.Column(
+ linkify=True
+ )
+ name = tables.Column(
+ linkify=True
+ )
+
+ class Meta(BaseTable.Meta):
+ model = Interface
+ fields = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
+ default_columns = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
class WirelessLinkTable(BaseTable):
diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py
index 6405d46df..a9238df33 100644
--- a/netbox/wireless/views.py
+++ b/netbox/wireless/views.py
@@ -1,5 +1,7 @@
+from dcim.models import Interface
from netbox.views import generic
from utilities.tables import paginate_table
+from utilities.utils import count_related
from . import filtersets, forms, tables
from .models import *
@@ -81,7 +83,9 @@ class WirelessLANGroupBulkDeleteView(generic.BulkDeleteView):
#
class WirelessLANListView(generic.ObjectListView):
- queryset = WirelessLAN.objects.all()
+ queryset = WirelessLAN.objects.annotate(
+ interface_count=count_related(Interface, 'wireless_lans')
+ )
filterset = filtersets.WirelessLANFilterSet
filterset_form = forms.WirelessLANFilterForm
table = tables.WirelessLANTable
@@ -90,6 +94,17 @@ class WirelessLANListView(generic.ObjectListView):
class WirelessLANView(generic.ObjectView):
queryset = WirelessLAN.objects.all()
+ def get_extra_context(self, request, instance):
+ attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
+ wireless_lans=instance
+ )
+ interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces)
+ paginate_table(interfaces_table, request)
+
+ return {
+ 'interfaces_table': interfaces_table,
+ }
+
class WirelessLANEditView(generic.ObjectEditView):
queryset = WirelessLAN.objects.all()