mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
#3979 cleanup
This commit is contained in:
parent
3a3ed8bf64
commit
1c6a84659c
@ -236,8 +236,8 @@ INTERFACE_BUTTONS = """
|
|||||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif record.is_wireless and perms.wireless.add_wirelesslink %}
|
{% elif record.is_wireless and perms.wireless.add_wirelesslink %}
|
||||||
<a href="{% url 'wireless:wirelesslink_add' %}?interface_a={{ record.pk }}" class="btn btn-success btn-sm">
|
<a href="{% url 'wireless:wirelesslink_add' %}?site_a={{ record.device.site.pk }}&location_a={{ record.device.location.pk }}&device_a={{ record.device.pk }}&interface_a={{ record.pk }}&site_b={{ record.device.site.pk }}&location_b={{ record.device.location.pk }}" class="btn btn-success btn-sm">
|
||||||
<span class="mdi mdi-wifi" aria-hidden="true"></span>
|
<span class="mdi mdi-wifi-plus" aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
"""
|
"""
|
||||||
|
@ -27,6 +27,7 @@ from netbox.constants import SEARCH_MAX_RESULTS, SEARCH_TYPES
|
|||||||
from netbox.forms import SearchForm
|
from netbox.forms import SearchForm
|
||||||
from tenancy.models import Tenant
|
from tenancy.models import Tenant
|
||||||
from virtualization.models import Cluster, VirtualMachine
|
from virtualization.models import Cluster, VirtualMachine
|
||||||
|
from wireless.models import WirelessLAN, WirelessLink
|
||||||
|
|
||||||
|
|
||||||
class HomeView(View):
|
class HomeView(View):
|
||||||
@ -92,14 +93,19 @@ class HomeView(View):
|
|||||||
("dcim.view_powerpanel", "Power Panels", PowerPanel.objects.restrict(request.user, 'view').count),
|
("dcim.view_powerpanel", "Power Panels", PowerPanel.objects.restrict(request.user, 'view').count),
|
||||||
("dcim.view_powerfeed", "Power Feeds", PowerFeed.objects.restrict(request.user, 'view').count),
|
("dcim.view_powerfeed", "Power Feeds", PowerFeed.objects.restrict(request.user, 'view').count),
|
||||||
)
|
)
|
||||||
|
wireless = (
|
||||||
|
("wireless.view_wirelesslan", "Wireless LANs", WirelessLAN.objects.restrict(request.user, 'view').count),
|
||||||
|
("wireless.view_wirelesslink", "Wireless Links", WirelessLink.objects.restrict(request.user, 'view').count),
|
||||||
|
)
|
||||||
sections = (
|
sections = (
|
||||||
("Organization", org, "domain"),
|
("Organization", org, "domain"),
|
||||||
("IPAM", ipam, "counter"),
|
("IPAM", ipam, "counter"),
|
||||||
("Virtualization", virtualization, "monitor"),
|
("Virtualization", virtualization, "monitor"),
|
||||||
("Inventory", dcim, "server"),
|
("Inventory", dcim, "server"),
|
||||||
("Connections", connections, "cable-data"),
|
|
||||||
("Circuits", circuits, "transit-connection-variant"),
|
("Circuits", circuits, "transit-connection-variant"),
|
||||||
|
("Connections", connections, "cable-data"),
|
||||||
("Power", power, "flash"),
|
("Power", power, "flash"),
|
||||||
|
("Wireless", wireless, "wifi"),
|
||||||
)
|
)
|
||||||
|
|
||||||
stats = []
|
stats = []
|
||||||
|
33
netbox/templates/wireless/wirelesslink_edit.html
Normal file
33
netbox/templates/wireless/wirelesslink_edit.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{% extends 'generic/object_edit.html' %}
|
||||||
|
{% load form_helpers %}
|
||||||
|
|
||||||
|
{% block form %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="field-group">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<h5 class="offset-sm-3">Side A</h5>
|
||||||
|
</div>
|
||||||
|
{% render_field form.device_a %}
|
||||||
|
{% render_field form.interface_a %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div class="field-group">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<h5 class="offset-sm-3">Side B</h5>
|
||||||
|
</div>
|
||||||
|
{% render_field form.device_b %}
|
||||||
|
{% render_field form.interface_b %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% if form.custom_fields %}
|
||||||
|
<div class="field-group my-5">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<h5 class="offset-sm-3">Custom Fields</h5>
|
||||||
|
</div>
|
||||||
|
{% render_custom_fields form %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
@ -1,4 +1,4 @@
|
|||||||
from dcim.models import Device, Interface
|
from dcim.models import Device, Interface, Location, Site
|
||||||
from extras.forms import CustomFieldModelForm
|
from extras.forms import CustomFieldModelForm
|
||||||
from extras.models import Tag
|
from extras.models import Tag
|
||||||
from ipam.models import VLAN
|
from ipam.models import VLAN
|
||||||
@ -64,10 +64,30 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
||||||
|
site_a = DynamicModelChoiceField(
|
||||||
|
queryset=Site.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Site',
|
||||||
|
initial_params={
|
||||||
|
'devices': '$device_a',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
location_a = DynamicModelChoiceField(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Location',
|
||||||
|
initial_params={
|
||||||
|
'devices': '$device_a',
|
||||||
|
}
|
||||||
|
)
|
||||||
device_a = DynamicModelChoiceField(
|
device_a = DynamicModelChoiceField(
|
||||||
queryset=Device.objects.all(),
|
queryset=Device.objects.all(),
|
||||||
|
query_params={
|
||||||
|
'site_id': '$site_a',
|
||||||
|
'location_id': '$location_a',
|
||||||
|
},
|
||||||
required=False,
|
required=False,
|
||||||
label='Device A',
|
label='Device',
|
||||||
initial_params={
|
initial_params={
|
||||||
'interfaces': '$interface_a'
|
'interfaces': '$interface_a'
|
||||||
}
|
}
|
||||||
@ -79,12 +99,32 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
|||||||
'device_id': '$device_a',
|
'device_id': '$device_a',
|
||||||
},
|
},
|
||||||
disabled_indicator='_occupied',
|
disabled_indicator='_occupied',
|
||||||
label='Interface A'
|
label='Interface'
|
||||||
|
)
|
||||||
|
site_b = DynamicModelChoiceField(
|
||||||
|
queryset=Site.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Site',
|
||||||
|
initial_params={
|
||||||
|
'devices': '$device_b',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
location_b = DynamicModelChoiceField(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label='Location',
|
||||||
|
initial_params={
|
||||||
|
'devices': '$device_b',
|
||||||
|
}
|
||||||
)
|
)
|
||||||
device_b = DynamicModelChoiceField(
|
device_b = DynamicModelChoiceField(
|
||||||
queryset=Device.objects.all(),
|
queryset=Device.objects.all(),
|
||||||
|
query_params={
|
||||||
|
'site_id': '$site_b',
|
||||||
|
'location_id': '$location_b',
|
||||||
|
},
|
||||||
required=False,
|
required=False,
|
||||||
label='Device B',
|
label='Device',
|
||||||
initial_params={
|
initial_params={
|
||||||
'interfaces': '$interface_b'
|
'interfaces': '$interface_b'
|
||||||
}
|
}
|
||||||
@ -96,7 +136,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
|||||||
'device_id': '$device_b',
|
'device_id': '$device_b',
|
||||||
},
|
},
|
||||||
disabled_indicator='_occupied',
|
disabled_indicator='_occupied',
|
||||||
label='Interface B'
|
label='Interface'
|
||||||
)
|
)
|
||||||
tags = DynamicModelMultipleChoiceField(
|
tags = DynamicModelMultipleChoiceField(
|
||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
@ -106,11 +146,13 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = WirelessLink
|
model = WirelessLink
|
||||||
fields = [
|
fields = [
|
||||||
'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'auth_type',
|
'site_a', 'location_a', 'device_a', 'interface_a', 'site_b', 'location_b', 'device_b', 'interface_b',
|
||||||
'auth_cipher', 'auth_psk', 'tags',
|
'status', 'ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
|
||||||
]
|
]
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Link', ('device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags')),
|
('Side A', ('site_a', 'location_a', 'device_a', 'interface_a')),
|
||||||
|
('Side B', ('site_b', 'location_b', 'device_b', 'interface_b')),
|
||||||
|
('Link', ('status', 'ssid', 'description', 'tags')),
|
||||||
('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
|
('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
|
||||||
)
|
)
|
||||||
widgets = {
|
widgets = {
|
||||||
@ -118,3 +160,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
|||||||
'auth_type': StaticSelect,
|
'auth_type': StaticSelect,
|
||||||
'auth_cipher': StaticSelect,
|
'auth_cipher': StaticSelect,
|
||||||
}
|
}
|
||||||
|
labels = {
|
||||||
|
'auth_type': 'Type',
|
||||||
|
'auth_cipher': 'Cipher',
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user