added draw_default_layout

This commit is contained in:
Mattijs Vanhaverbeke
2022-02-22 15:07:30 +01:00
parent 064751f727
commit b53ceed2ae
5 changed files with 19 additions and 10 deletions
+8 -6
View File
@@ -35,6 +35,7 @@ Then run `python3 manage.py collectstatic --no-input`
| netbox version | netbox-topology-views version | | netbox version | netbox-topology-views version |
| ------------- |-------------| | ------------- |-------------|
| >= 3.1.8 | >= v1.0.0a1 |
| >= 2.11.1 | >= v0.5.3 | | >= 2.11.1 | >= v0.5.3 |
| >= 2.10.0 | >= v0.5.0 | | >= 2.10.0 | >= v0.5.0 |
| < 2.10.0 | =< v0.4.10 | | < 2.10.0 | =< v0.4.10 |
@@ -55,20 +56,21 @@ Example:
``` ```
PLUGINS_CONFIG = { PLUGINS_CONFIG = {
'netbox_topology_views': { 'netbox_topology_views': {
'device_img': 'router,switch,firewall', 'device_img': ['router','switch', 'firewall'],
'preselected_device_roles': 'Router, Firewall' 'preselected_device_roles': ['Router', 'Firewall']
} }
} }
``` ```
| Setting | Default value | Description | | Setting | Default value | Description |
| ------------- |-------------| -----| | ------------- |-------------| -----|
| 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' | The slug of the device roles that you have a image for. | | 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'] | The slug of the device roles that you have a image for. |
| preselected_device_roles | 'Firewall,Router,Distribution Switch,Core Switch,Internal Switch,Access Switch,Server,Storage,Backup,Wireless AP' | The full name of the device roles you want to pre select in the global view. Note that this is case sensitive| | preselected_device_roles | ['Firewall', 'Router', 'Distribution Switch', 'Core Switch', 'Internal Switch', 'Access Switch', 'Server', 'Storage', 'Backup', 'Wireless AP'] | The full name of the device roles you want to pre select in the global view. Note that this is case sensitive|
| allow_coordinates_saving | False | (bool) Set to true if you use the custom coordinates fields and want to save the coordinates | | allow_coordinates_saving | False | (bool) Set to true if you use the custom coordinates fields and want to save the coordinates |
| ignore_cable_type | 'power outlet,power port' | The cable types that you want to ignore in the views | | ignore_cable_type | ['power outlet', 'power port'] | The cable types that you want to ignore in the views |
| preselected_tags | '' | The name of tags you want to preload | | preselected_tags | '[]' | The name of tags you want to preload |
| enable_circuit_terminations | False | (bool) Set to true if you want to see circuit terminations in the topology | | enable_circuit_terminations | False | (bool) Set to true if you want to see circuit terminations in the topology |
| draw_default_layout | False | (bool) Set to True if you want to load draw the topology on the initial load (when you go to the topology plugin page) |
### Custom Images ### Custom Images
+1 -1
View File
@@ -4,7 +4,7 @@ class TopologyViewsConfig(PluginConfig):
name = 'netbox_topology_views' name = 'netbox_topology_views'
verbose_name = 'Topology views' verbose_name = 'Topology views'
description = 'An plugin to render topology maps' description = 'An plugin to render topology maps'
version = '1.0.0-alpha.1' version = '1.0.0-alpha.2'
author = 'Mattijs Vanhaverbeke' author = 'Mattijs Vanhaverbeke'
author_email = 'author@example.com' author_email = 'author@example.com'
base_url = 'netbox_topology_views' base_url = 'netbox_topology_views'
+8 -1
View File
@@ -10,6 +10,7 @@ from .forms import DeviceFilterForm
from .filters import DeviceFilterSet from .filters import DeviceFilterSet
import json import json
import distutils
from dcim.models import Device, Cable, DeviceRole, DeviceType from dcim.models import Device, Cable, DeviceRole, DeviceType
from extras.models import Tag from extras.models import Tag
@@ -161,8 +162,13 @@ class TopologyHomeView(PermissionRequiredMixin, View):
self.queryset = Device.objects.all() self.queryset = Device.objects.all()
self.queryset = self.filterset(request.GET, self.queryset).qs self.queryset = self.filterset(request.GET, self.queryset).qs
topo_data = None topo_data = None
if request.GET: if request.GET:
topo_data = get_topology_data(self.queryset) if 'draw_init' in request.GET:
if bool(distutils.util.strtobool(request.GET["draw_init"])):
topo_data = get_topology_data(self.queryset)
else:
topo_data = get_topology_data(self.queryset)
else: else:
preselected_device_roles = settings.PLUGINS_CONFIG["netbox_topology_views"]["preselected_device_roles"] preselected_device_roles = settings.PLUGINS_CONFIG["netbox_topology_views"]["preselected_device_roles"]
preselected_tags = settings.PLUGINS_CONFIG["netbox_topology_views"]["preselected_tags"] preselected_tags = settings.PLUGINS_CONFIG["netbox_topology_views"]["preselected_tags"]
@@ -173,6 +179,7 @@ class TopologyHomeView(PermissionRequiredMixin, View):
q = QueryDict(mutable=True) q = QueryDict(mutable=True)
q.setlist('device_role_id', list(q_device_role_id)) q.setlist('device_role_id', list(q_device_role_id))
q.setlist('tag', list(q_tags)) q.setlist('tag', list(q_tags))
q['draw_init'] = settings.PLUGINS_CONFIG["netbox_topology_views"]["draw_default_layout"]
query_string = q.urlencode() query_string = q.urlencode()
print(query_string) print(query_string)
return HttpResponseRedirect(request.path + "?" + query_string) return HttpResponseRedirect(request.path + "?" + query_string)
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"private": true, "private": true,
"name": "netbox_topology_views", "name": "netbox_topology_views",
"version": "1.0.0-alpha.1", "version": "1.0.0-alpha.2",
"scripts": { "scripts": {
"resources": "gulp build", "resources": "gulp build",
"resources_dev": "gulp build_dev" "resources_dev": "gulp build_dev"
+1 -1
View File
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
setup( setup(
name='netbox-topology-views', name='netbox-topology-views',
version='1.0.0-alpha.1', version='1.0.0-alpha.2',
description='An NetBox plugin to create Topology maps', description='An NetBox plugin to create Topology maps',
url='https://github.com/mattieserver/netbox-topology-views', url='https://github.com/mattieserver/netbox-topology-views',
author='Mattijs Vanhaverbeke', author='Mattijs Vanhaverbeke',