|
@@ -1,10 +1,20 @@
|
|
|
|
|
+from django.utils.translation import gettext_lazy as _
|
|
|
|
|
+
|
|
|
from dcim.models import Interface
|
|
from dcim.models import Interface
|
|
|
|
|
+from extras.ui.panels import CustomFieldsPanel, TagsPanel
|
|
|
|
|
+from netbox.ui import actions, layout
|
|
|
|
|
+from netbox.ui.panels import (
|
|
|
|
|
+ CommentsPanel,
|
|
|
|
|
+ ObjectsTablePanel,
|
|
|
|
|
+ RelatedObjectsPanel,
|
|
|
|
|
+)
|
|
|
from netbox.views import generic
|
|
from netbox.views import generic
|
|
|
from utilities.query import count_related
|
|
from utilities.query import count_related
|
|
|
from utilities.views import GetRelatedModelsMixin, register_model_view
|
|
from utilities.views import GetRelatedModelsMixin, register_model_view
|
|
|
|
|
|
|
|
from . import filtersets, forms, tables
|
|
from . import filtersets, forms, tables
|
|
|
from .models import *
|
|
from .models import *
|
|
|
|
|
+from .ui import panels
|
|
|
|
|
|
|
|
#
|
|
#
|
|
|
# Wireless LAN groups
|
|
# Wireless LAN groups
|
|
@@ -28,6 +38,33 @@ class WirelessLANGroupListView(generic.ObjectListView):
|
|
|
@register_model_view(WirelessLANGroup)
|
|
@register_model_view(WirelessLANGroup)
|
|
|
class WirelessLANGroupView(GetRelatedModelsMixin, generic.ObjectView):
|
|
class WirelessLANGroupView(GetRelatedModelsMixin, generic.ObjectView):
|
|
|
queryset = WirelessLANGroup.objects.all()
|
|
queryset = WirelessLANGroup.objects.all()
|
|
|
|
|
+ layout = layout.SimpleLayout(
|
|
|
|
|
+ left_panels=[
|
|
|
|
|
+ panels.WirelessLANGroupPanel(),
|
|
|
|
|
+ TagsPanel(),
|
|
|
|
|
+ CommentsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ right_panels=[
|
|
|
|
|
+ RelatedObjectsPanel(),
|
|
|
|
|
+ CustomFieldsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ bottom_panels=[
|
|
|
|
|
+ ObjectsTablePanel(
|
|
|
|
|
+ model='wireless.WirelessLANGroup',
|
|
|
|
|
+ title=_('Child Groups'),
|
|
|
|
|
+ filters={'parent_id': lambda ctx: ctx['object'].pk},
|
|
|
|
|
+ actions=[
|
|
|
|
|
+ actions.AddObject(
|
|
|
|
|
+ 'wireless.WirelessLANGroup',
|
|
|
|
|
+ label=_('Add Wireless LAN Group'),
|
|
|
|
|
+ url_params={
|
|
|
|
|
+ 'parent': lambda ctx: ctx['object'].pk,
|
|
|
|
|
+ }
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
def get_extra_context(self, request, instance):
|
|
def get_extra_context(self, request, instance):
|
|
|
groups = instance.get_descendants(include_self=True)
|
|
groups = instance.get_descendants(include_self=True)
|
|
@@ -105,17 +142,24 @@ class WirelessLANListView(generic.ObjectListView):
|
|
|
@register_model_view(WirelessLAN)
|
|
@register_model_view(WirelessLAN)
|
|
|
class WirelessLANView(generic.ObjectView):
|
|
class WirelessLANView(generic.ObjectView):
|
|
|
queryset = WirelessLAN.objects.all()
|
|
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)
|
|
|
|
|
- interfaces_table.configure(request)
|
|
|
|
|
-
|
|
|
|
|
- return {
|
|
|
|
|
- 'interfaces_table': interfaces_table,
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ layout = layout.SimpleLayout(
|
|
|
|
|
+ left_panels=[
|
|
|
|
|
+ panels.WirelessLANPanel(),
|
|
|
|
|
+ TagsPanel(),
|
|
|
|
|
+ CommentsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ right_panels=[
|
|
|
|
|
+ panels.WirelessAuthenticationPanel(),
|
|
|
|
|
+ CustomFieldsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ bottom_panels=[
|
|
|
|
|
+ ObjectsTablePanel(
|
|
|
|
|
+ model='dcim.Interface',
|
|
|
|
|
+ title=_('Attached Interfaces'),
|
|
|
|
|
+ filters={'wireless_lan_id': lambda ctx: ctx['object'].pk},
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
|
|
|
|
|
@register_model_view(WirelessLAN, 'add', detail=False)
|
|
@register_model_view(WirelessLAN, 'add', detail=False)
|
|
@@ -173,6 +217,19 @@ class WirelessLinkListView(generic.ObjectListView):
|
|
|
@register_model_view(WirelessLink)
|
|
@register_model_view(WirelessLink)
|
|
|
class WirelessLinkView(generic.ObjectView):
|
|
class WirelessLinkView(generic.ObjectView):
|
|
|
queryset = WirelessLink.objects.all()
|
|
queryset = WirelessLink.objects.all()
|
|
|
|
|
+ layout = layout.SimpleLayout(
|
|
|
|
|
+ left_panels=[
|
|
|
|
|
+ panels.WirelessLinkInterfacePanel('interface_a', title=_('Interface A')),
|
|
|
|
|
+ panels.WirelessLinkPropertiesPanel(),
|
|
|
|
|
+ TagsPanel(),
|
|
|
|
|
+ CommentsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ right_panels=[
|
|
|
|
|
+ panels.WirelessLinkInterfacePanel('interface_b', title=_('Interface B')),
|
|
|
|
|
+ panels.WirelessAuthenticationPanel(),
|
|
|
|
|
+ CustomFieldsPanel(),
|
|
|
|
|
+ ],
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
|
|
|
|
|
@register_model_view(WirelessLink, 'add', detail=False)
|
|
@register_model_view(WirelessLink, 'add', detail=False)
|