477 prepare for netbox 4.0 (#495)

* Change extras.plugins to netbox.plugins (#487)

* Remove ButtonColorChoices (#491)

* remove is_htmx

* fieldset update

* Additions to 477 prepare for netbox 4.0 (#504)

* Re-add overriding of default_renderer

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Restore i18n of field names

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Remove unnecessary FieldSets

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Remove trailing whitespaces in forms.py

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Fix error in resizeCanvas

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Remove btn-sm class from buttons

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* Use htmx_partial instead of request.htmx

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

---------

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>

* fix choises

* fix color switcher (use new attribute)

* fix htmx filter

* 4.0.0-beta.1 release

---------

Signed-off-by: Iain Buclaw <ibuclaw@gdcproject.org>
Co-authored-by: Mario <github@franzbonenkamp.de>
Co-authored-by: Iain Buclaw <ibuclaw@gdcproject.org>
This commit is contained in:
mattieserver
2024-06-05 13:23:34 +02:00
committed by GitHub
co-authored by Mario Iain Buclaw
parent 8368ffa2fd
commit 2895294903
17 changed files with 259 additions and 671 deletions
+21 -21
View File
@@ -4,7 +4,6 @@ from typing import DefaultDict, Dict, Optional, Union
import time
from itertools import chain
from utilities.htmx import is_htmx
from circuits.models import Circuit, CircuitTermination, ProviderNetwork
from dcim.models import (
Cable,
@@ -29,6 +28,7 @@ from django.shortcuts import render, get_object_or_404
from django.views.generic import View
from extras.models import Tag, SavedFilter
from wireless.models import WirelessLink
from utilities.htmx import htmx_partial
from netbox.views.generic import (
ObjectView,
ObjectListView,
@@ -92,7 +92,7 @@ def get_image_for_entity(entity: Union[Device, Circuit, PowerPanel, PowerFeed]):
return RoleImage.objects.get(**query).get_image_url()
except RoleImage.DoesNotExist:
return find_image_url(
entity.device_role.slug if is_device else get_model_slug(entity.__class__)
entity.role.slug if is_device else get_model_slug(entity.__class__)
)
@@ -152,9 +152,9 @@ def create_node(
node_content += (
f"<tr><th>Type: </th><td>{device.device_type.model}</td></tr>"
)
if device.device_role.name is not None:
if device.role.name is not None:
node_content += (
f"<tr><th>Role: </th><td>{device.device_role.name}</td></tr>"
f"<tr><th>Role: </th><td>{device.role.name}</td></tr>"
)
if device.serial != "":
node_content += f"<tr><th>Serial: </th><td>{device.serial}</td></tr>"
@@ -190,8 +190,8 @@ def create_node(
node["rack"] = device.rack.name
node["rack_id"] = device.rack_id
if device.device_role.color != "":
node["color.border"] = "#" + device.device_role.color
if device.role.color != "":
node["color.border"] = "#" + device.role.color
model_class = getattr(netbox_topology_views.models, model_name)
@@ -767,28 +767,28 @@ class TopologyHomeView(PermissionRequiredMixin, View):
q.setlist("role_id", list(preselected_device_roles))
q.setlist("tag", list(preselected_tags))
if individualOptions.save_coords: q['save_coords'] = "on"
if individualOptions.show_unconnected: q['show_unconnected'] = "on"
if individualOptions.show_cables: q['show_cables'] = "on"
if individualOptions.show_logical_connections: q['show_logical_connections'] = "on"
if individualOptions.show_single_cable_logical_conns: q['show_single_cable_logical_conns'] = "on"
if individualOptions.show_neighbors: q['show_neighbors'] = "on"
if individualOptions.show_circuit: q['show_circuit'] = "on"
if individualOptions.show_power: q['show_power'] = "on"
if individualOptions.show_wireless: q['show_wireless'] = "on"
if individualOptions.group_sites: q['group_sites'] = "on"
if individualOptions.group_locations: q['group_locations'] = "on"
if individualOptions.group_racks: q['group_racks'] = "on"
if individualOptions.save_coords: q['save_coords'] = "True"
if individualOptions.show_unconnected: q['show_unconnected'] = "True"
if individualOptions.show_cables: q['show_cables'] = "True"
if individualOptions.show_logical_connections: q['show_logical_connections'] = "True"
if individualOptions.show_single_cable_logical_conns: q['show_single_cable_logical_conns'] = "True"
if individualOptions.show_neighbors: q['show_neighbors'] = "True"
if individualOptions.show_circuit: q['show_circuit'] = "True"
if individualOptions.show_power: q['show_power'] = "True"
if individualOptions.show_wireless: q['show_wireless'] = "True"
if individualOptions.group_sites: q['group_sites'] = "True"
if individualOptions.group_locations: q['group_locations'] = "True"
if individualOptions.group_racks: q['group_racks'] = "True"
if individualOptions.draw_default_layout:
q['draw_init'] = "true"
q['draw_init'] = "True"
else:
q['draw_init'] = "false"
q['draw_init'] = "False"
query_string = q.urlencode()
return HttpResponseRedirect(f"{request.path}?{query_string}")
if is_htmx(request):
if htmx_partial(request):
return render(
request,
"netbox_topology_views/htmx_topology.html",