diff --git a/netbox_topology_views/__init__.py b/netbox_topology_views/__init__.py
index 8a2f7e3..528f2e2 100644
--- a/netbox_topology_views/__init__.py
+++ b/netbox_topology_views/__init__.py
@@ -4,7 +4,7 @@ class TopologyViewsConfig(PluginConfig):
name = 'netbox_topology_views'
verbose_name = 'Topology views'
description = 'An plugin to render topology maps'
- version = '1.0.0-alpha.2'
+ version = '1.0.0-alpha.3'
author = 'Mattijs Vanhaverbeke'
author_email = 'author@example.com'
base_url = 'netbox_topology_views'
@@ -15,7 +15,7 @@ class TopologyViewsConfig(PluginConfig):
'device_img': ['access-switch', 'core-switch', 'firewall', 'router', 'distribution-switch', 'backup', 'storage,wan-network', 'wireless-ap', 'server', 'internal-switch', 'isp-cpe-material', 'non-racked-devices', 'power-units'],
'allow_coordinates_saving': False,
'preselected_tags' : [],
- 'enable_circuit_terminations': False,
+ 'enable_circuit_terminations': True,
'draw_default_layout': False
}
diff --git a/netbox_topology_views/api/serializers.py b/netbox_topology_views/api/serializers.py
index f713887..b4a209b 100644
--- a/netbox_topology_views/api/serializers.py
+++ b/netbox_topology_views/api/serializers.py
@@ -3,18 +3,6 @@ from rest_framework.serializers import ModelSerializer
from dcim.models import DeviceRole, Device
from extras.models import Tag
-class PreDeviceRoleSerializer(ModelSerializer):
-
- class Meta:
- model = DeviceRole
- fields = ('id', 'name')
-
-class PreTagSerializer(ModelSerializer):
-
- class Meta:
- model = Tag
- fields = ('id', 'name')
-
class TopologyDummySerializer(ModelSerializer):
diff --git a/netbox_topology_views/api/urls.py b/netbox_topology_views/api/urls.py
index 506e2ff..1fe59ac 100644
--- a/netbox_topology_views/api/urls.py
+++ b/netbox_topology_views/api/urls.py
@@ -3,9 +3,6 @@ from . import views
router = routers.DefaultRouter()
-router.register('preselectdeviceroles', views.PreSelectDeviceRolesViewSet)
-router.register('preselecttags', views.PreSelectTagsViewSet)
-router.register('search', views.SearchViewSet, basename='search')
router.register('save-coords', views.SaveCoordsViewSet, basename='save_coords')
urlpatterns = router.urls
\ No newline at end of file
diff --git a/netbox_topology_views/api/views.py b/netbox_topology_views/api/views.py
index 94469c9..e3be3ed 100644
--- a/netbox_topology_views/api/views.py
+++ b/netbox_topology_views/api/views.py
@@ -4,7 +4,7 @@ from rest_framework.response import Response
from django.contrib.contenttypes.models import ContentType
from rest_framework.routers import APIRootView
-from .serializers import PreDeviceRoleSerializer, TopologyDummySerializer, PreTagSerializer
+from .serializers import TopologyDummySerializer
from django.conf import settings
from dcim.models import DeviceRole, Device, Cable
@@ -25,13 +25,6 @@ class TopologyViewsRootView(APIRootView):
def get_view_name(self):
return 'TopologyViews'
-class PreSelectDeviceRolesViewSet(ReadOnlyModelViewSet):
- queryset = DeviceRole.objects.filter(name__in=preselected_device_roles)
- serializer_class = PreDeviceRoleSerializer
-
-class PreSelectTagsViewSet(ReadOnlyModelViewSet):
- queryset = Tag.objects.filter(name__in=preselected_tags)
- serializer_class = PreTagSerializer
class SaveCoordsViewSet(ReadOnlyModelViewSet):
queryset = Device.objects.all()
@@ -74,200 +67,3 @@ class SaveCoordsViewSet(ReadOnlyModelViewSet):
results["status"] = "not allowed to save coords"
return Response(results, status=500)
-class SearchViewSet(ReadOnlyModelViewSet):
- queryset = Device.objects.all()
- serializer_class = TopologyDummySerializer
-
- def _filter(self, site, role, name, tags, region, location):
- filter_devices = Device.objects.all()
- if name is not None:
- filter_devices = filter_devices.filter(name__contains=name)
- if site is not None:
- filter_devices = filter_devices.filter(site__id__in=site)
- if role is not None:
- filter_devices = filter_devices.filter(device_role__id__in=role)
- if tags is not None:
- filter_devices = filter_devices.filter(tags__id__in=tags)
- if region is not None:
- filter_devices = filter_devices.filter(site__region__id__in=region)
- if location is not None:
- filter_devices = filter_devices.filter(location__id__in=location)
- return filter_devices
-
-
- @action(detail=False, methods=['get'])
- def search(self, request):
- name = request.query_params.get('name', None)
- if name == "":
- name = None
-
- sites = request.query_params.getlist('sites[]', None)
- if sites == []:
- sites = None
-
- devicerole = request.query_params.getlist('devicerole[]', None)
- if devicerole == []:
- devicerole = None
-
- tags = request.query_params.getlist('tags[]', None)
- if tags == []:
- tags = None
-
- regions = request.query_params.getlist('regions[]', None)
- if regions == []:
- regions = None
-
- locations = request.query_params.getlist('locations[]', None)
- if locations == []:
- locations = None
-
- hide_unconnected = request.query_params.get('hide_unconnected', None)
- if hide_unconnected == "":
- hide_unconnected = None
-
- devices = self._filter(sites, devicerole, name, tags, regions, locations)
-
- nodes = []
- edges = []
- edge_ids = 0
- cable_ids = []
- circuit_ids = []
- for device in devices:
- cables = device.get_cables()
- if cables.exists():
- device_has_connections = True
- for cable in cables:
- if cable.termination_a_type.name != "circuit termination" and cable.termination_b_type.name != "circuit termination":
- if cable.id not in cable_ids:
- if cable.termination_a_type.name not in ignore_cable_type and cable.termination_b_type.name not in ignore_cable_type:
- cable_ids.append(cable.id)
- edge_ids += 1
-
- cable_a_dev_name = cable.termination_a.device.name
- if cable_a_dev_name is None:
- cable_a_dev_name = "device A name unknown"
- cable_a_name = cable.termination_a.name
- if cable_a_name is None:
- cable_a_name = "cable A name unknown"
- cable_b_dev_name = cable.termination_b.device.name
- if cable_b_dev_name is None:
- cable_b_dev_name = "device B name unknown"
- cable_b_name = cable.termination_b.name
- if cable_b_name is None:
- cable_b_name = "cable B name unknown"
-
- edge = {}
- edge["id"] = edge_ids
- edge["from"] = cable.termination_a.device.id
- edge["to"] = cable.termination_b.device.id
- edge["title"] = "Cable between
" + cable_a_dev_name + " [" + cable_a_name + "]
" + cable_b_dev_name + " [" + cable_b_name + "]"
- if cable.color != "":
- edge["color"] = "#" + cable.color
- edges.append(edge)
- else:
- if cable.termination_a_type.name == "circuit termination":
- if settings.PLUGINS_CONFIG["netbox_topology_views"]["enable_circuit_terminations"]:
- if cable.termination_a.circuit.id not in circuit_ids:
- circuit_ids.append(cable.termination_a.circuit.id)
- edge_ids += 1
-
- cable_b_dev_name = cable.termination_b.device.name
- if cable_b_dev_name is None:
- cable_b_dev_name = "device B name unknown"
- cable_b_name = cable.termination_b.name
- if cable_b_name is None:
- cable_b_name = "cable B name unknown"
-
- edge = {}
- edge["id"] = edge_ids
- edge["to"] = cable.termination_b.device.id
- edge["dashes"] = True
- title = ""
-
- title += "Circuit provider: " + cable.termination_a.circuit.provider.name + "
"
- title += "Termination between
"
- title += cable_b_dev_name + " [" + cable_b_name + "]
"
- # To Many if's
- if cable.termination_a.circuit.termination_a is not None:
- if cable.termination_a.circuit.termination_a.cable is not None:
- if cable.termination_a.circuit.termination_a.cable.id != cable.id:
- if cable.termination_a.circuit.termination_a.cable.termination_b is not None:
- if cable.termination_a.circuit.termination_a.cable.termination_b.device is not None:
- edge["from"] = cable.termination_a.circuit.termination_a.cable.termination_b.device.id
-
- cable_a_dev_name = cable.termination_a.circuit.termination_a.cable.termination_b.device.name
- if cable_a_dev_name is None:
- cable_a_dev_name = "device B name unknown"
- cable_b_name = cable.termination_a.circuit.termination_a.cable.termination_b.name
- if cable_a_name is None:
- cable_a_name = "cable B name unknown"
- title += cable_a_dev_name + " [" + cable_a_name + "]
"
- edge["title"] = title
- edges.append(edge)
- # To Many if's
- if cable.termination_a.circuit.termination_z is not None:
- if cable.termination_a.circuit.termination_z.cable is not None:
- if cable.termination_a.circuit.termination_z.cable.id != cable.id:
- if cable.termination_a.circuit.termination_z.cable.termination_b is not None:
- if cable.termination_a.circuit.termination_z.cable.termination_b.device is not None:
- edge["from"] = cable.termination_a.circuit.termination_z.cable.termination_b.device.id
-
- cable_a_dev_name = cable.termination_a.circuit.termination_z.cable.termination_b.device.name
- if cable_a_dev_name is None:
- cable_a_dev_name = "device B name unknown"
- cable_a_name = cable.termination_a.circuit.termination_z.cable.termination_b.name
- if cable_a_name is None:
- cable_a_name = "cable B name unknown"
- title += cable_a_dev_name + " [" + cable_a_name + "]
"
- edge["title"] = title
- edges.append(edge)
- else:
- device_has_connections = False
-
- if hide_unconnected == 'false' or (hide_unconnected == 'true' and device_has_connections is True):
- dev_name = device.name
- if dev_name is None:
- dev_name = "device name unknown"
-
- node_content = ""
-
- if device.device_type.display_name is not None:
- node_content += "