mirror of
https://github.com/drygdryg/netbox-plugin-device-map.git
synced 2025-02-20 03:52:21 +03:00
Compare commits
4 Commits
a10435e101
...
974870adeb
Author | SHA1 | Date | |
---|---|---|---|
|
974870adeb | ||
|
69fbd6aef9 | ||
|
b422a926de | ||
|
242fe8e320 |
@ -15,6 +15,7 @@ class DeviceMapFilterForm(BootstrapMixin, forms.Form):
|
|||||||
)
|
)
|
||||||
vlan = DynamicModelChoiceField(
|
vlan = DynamicModelChoiceField(
|
||||||
queryset=VLAN.objects.all(),
|
queryset=VLAN.objects.all(),
|
||||||
|
required=False,
|
||||||
label="VLAN",
|
label="VLAN",
|
||||||
help_text="Filter devices by VLAN attached to any device interface",
|
help_text="Filter devices by VLAN attached to any device interface",
|
||||||
query_params={"group_id": "$vlan_group"}
|
query_params={"group_id": "$vlan_group"}
|
||||||
|
@ -26,18 +26,18 @@ class MapView(PermissionRequiredMixin, View):
|
|||||||
form = self.form(request.GET)
|
form = self.form(request.GET)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
interfaces = Interface.objects.all()
|
interfaces = Interface.objects.all()
|
||||||
vlan = form.cleaned_data['vlan']
|
#vlan = form.cleaned_data['vlan']
|
||||||
|
|
||||||
interfaces = interfaces.filter(Q(untagged_vlan=vlan) | Q(tagged_vlans=vlan))
|
#interfaces = interfaces.filter(Q(untagged_vlan=vlan) | Q(tagged_vlans=vlan))
|
||||||
devices = Device.objects.filter(interfaces__in=interfaces).distinct()
|
devices = Device.objects.filter(interfaces__in=interfaces).distinct()
|
||||||
if device_roles := form.cleaned_data['device_roles']:
|
if device_roles := form.cleaned_data['device_roles']:
|
||||||
devices = devices.filter(device_role__in=device_roles)
|
devices = devices.filter(role=device_roles)
|
||||||
|
|
||||||
geolocated_devices = {d: coords for d in devices if (coords := get_device_location(d))}
|
geolocated_devices = {d: coords for d in devices if (coords := get_device_location(d))}
|
||||||
non_geolocated_devices = set(devices) - set(geolocated_devices.keys())
|
non_geolocated_devices = set(devices) - set(geolocated_devices.keys())
|
||||||
|
|
||||||
map_data = configure_leaflet_map("geomap", geolocated_devices, form.cleaned_data['calculate_connections'])
|
map_data = configure_leaflet_map("geomap", geolocated_devices, form.cleaned_data['calculate_connections'])
|
||||||
map_data['vlan'] = vlan.id
|
#map_data['vlan'] = vlan.id
|
||||||
return render(request, self.template_name, context=dict(
|
return render(request, self.template_name, context=dict(
|
||||||
filter_form=form, map_data=map_data, non_geolocated_devices=non_geolocated_devices
|
filter_form=form, map_data=map_data, non_geolocated_devices=non_geolocated_devices
|
||||||
))
|
))
|
||||||
@ -61,12 +61,12 @@ class ConnectedCpeAjaxView(PermissionRequiredMixin, View):
|
|||||||
form = self.form(request.GET)
|
form = self.form(request.GET)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
data = form.cleaned_data
|
data = form.cleaned_data
|
||||||
connected_devices_qs = get_connected_devices(device, vlan=data['vlan'])\
|
connected_devices_qs = get_connected_devices(device, vlan=data['vlan'])
|
||||||
.filter(device_role__name=plugin_settings['cpe_device_role']).order_by()
|
#\
|
||||||
|
# .filter(device_role__name=plugin_settings['cpe_device_role']).order_by()
|
||||||
connected_devices = [dict(id=d.id, name=d.name, url=d.get_absolute_url(), comments=d.comments)
|
connected_devices = [dict(id=d.id, name=d.name, url=d.get_absolute_url(), comments=d.comments)
|
||||||
for d in connected_devices_qs]
|
for d in connected_devices_qs]
|
||||||
# Sorting list of CPE devices by the sequence of integers contained in the comments
|
|
||||||
connected_devices.sort(key=lambda d: tuple(int(n) for n in INTEGER_REGEXP.findall(d['comments'])))
|
|
||||||
return JsonResponse(dict(status=True, cpe_devices=connected_devices,
|
return JsonResponse(dict(status=True, cpe_devices=connected_devices,
|
||||||
device_type=f'{device.device_type.manufacturer.name} {device.device_type.model}'))
|
device_type=f'{device.device_type.manufacturer.name} {device.device_type.model}'))
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user