mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -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>
|
||||
{% endif %}
|
||||
{% 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">
|
||||
<span class="mdi mdi-wifi" aria-hidden="true"></span>
|
||||
<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-plus" aria-hidden="true"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
"""
|
||||
|
@ -27,6 +27,7 @@ from netbox.constants import SEARCH_MAX_RESULTS, SEARCH_TYPES
|
||||
from netbox.forms import SearchForm
|
||||
from tenancy.models import Tenant
|
||||
from virtualization.models import Cluster, VirtualMachine
|
||||
from wireless.models import WirelessLAN, WirelessLink
|
||||
|
||||
|
||||
class HomeView(View):
|
||||
@ -92,14 +93,19 @@ class HomeView(View):
|
||||
("dcim.view_powerpanel", "Power Panels", PowerPanel.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 = (
|
||||
("Organization", org, "domain"),
|
||||
("IPAM", ipam, "counter"),
|
||||
("Virtualization", virtualization, "monitor"),
|
||||
("Inventory", dcim, "server"),
|
||||
("Connections", connections, "cable-data"),
|
||||
("Circuits", circuits, "transit-connection-variant"),
|
||||
("Connections", connections, "cable-data"),
|
||||
("Power", power, "flash"),
|
||||
("Wireless", wireless, "wifi"),
|
||||
)
|
||||
|
||||
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.models import Tag
|
||||
from ipam.models import VLAN
|
||||
@ -64,10 +64,30 @@ class WirelessLANForm(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(
|
||||
queryset=Device.objects.all(),
|
||||
query_params={
|
||||
'site_id': '$site_a',
|
||||
'location_id': '$location_a',
|
||||
},
|
||||
required=False,
|
||||
label='Device A',
|
||||
label='Device',
|
||||
initial_params={
|
||||
'interfaces': '$interface_a'
|
||||
}
|
||||
@ -79,12 +99,32 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
||||
'device_id': '$device_a',
|
||||
},
|
||||
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(
|
||||
queryset=Device.objects.all(),
|
||||
query_params={
|
||||
'site_id': '$site_b',
|
||||
'location_id': '$location_b',
|
||||
},
|
||||
required=False,
|
||||
label='Device B',
|
||||
label='Device',
|
||||
initial_params={
|
||||
'interfaces': '$interface_b'
|
||||
}
|
||||
@ -96,7 +136,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
||||
'device_id': '$device_b',
|
||||
},
|
||||
disabled_indicator='_occupied',
|
||||
label='Interface B'
|
||||
label='Interface'
|
||||
)
|
||||
tags = DynamicModelMultipleChoiceField(
|
||||
queryset=Tag.objects.all(),
|
||||
@ -106,11 +146,13 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
||||
class Meta:
|
||||
model = WirelessLink
|
||||
fields = [
|
||||
'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'auth_type',
|
||||
'auth_cipher', 'auth_psk', 'tags',
|
||||
'site_a', 'location_a', 'device_a', 'interface_a', 'site_b', 'location_b', 'device_b', 'interface_b',
|
||||
'status', 'ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
|
||||
]
|
||||
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')),
|
||||
)
|
||||
widgets = {
|
||||
@ -118,3 +160,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
|
||||
'auth_type': StaticSelect,
|
||||
'auth_cipher': StaticSelect,
|
||||
}
|
||||
labels = {
|
||||
'auth_type': 'Type',
|
||||
'auth_cipher': 'Cipher',
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user