Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78b8a5ae97 | ||
|
|
71e4807cb1 | ||
|
|
dfbe26318f | ||
|
|
debc314714 | ||
|
|
d14d9c1414 | ||
|
|
d48d213b2c |
@@ -50,6 +50,7 @@ python3 manage.py collectstatic --no-input
|
|||||||
|
|
||||||
| netbox version | netbox-topology-views version |
|
| netbox version | netbox-topology-views version |
|
||||||
| -------------- | ----------------------------- |
|
| -------------- | ----------------------------- |
|
||||||
|
| >= 3.6.0 | >= v3.7.X |
|
||||||
| >= 3.5.0 | >= v3.4.X |
|
| >= 3.5.0 | >= v3.4.X |
|
||||||
| >= 3.4.0 | >= v3.X.X |
|
| >= 3.4.0 | >= v3.X.X |
|
||||||
| >= 3.3.0 | >= v3.0.0 |
|
| >= 3.3.0 | >= v3.0.0 |
|
||||||
|
|||||||
@@ -5,7 +5,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 = "3.6.0"
|
version = "3.7.0"
|
||||||
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"
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class ExportTopoToXML(PermissionRequiredMixin, ViewSet):
|
|||||||
|
|
||||||
self.filterset = DeviceFilterSet
|
self.filterset = DeviceFilterSet
|
||||||
self.queryset = Device.objects.all().select_related(
|
self.queryset = Device.objects.all().select_related(
|
||||||
"device_type", "device_role"
|
"device_type", "role"
|
||||||
)
|
)
|
||||||
self.queryset = self.filterset(request.GET, self.queryset).qs
|
self.queryset = self.filterset(request.GET, self.queryset).qs
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
method="search",
|
method="search",
|
||||||
label="Search",
|
label="Search",
|
||||||
)
|
)
|
||||||
device_role_id = django_filters.ModelMultipleChoiceFilter(
|
role_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name="device_role_id",
|
field_name="role_id",
|
||||||
queryset=DeviceRole.objects.all(),
|
queryset=DeviceRole.objects.all(),
|
||||||
label="Role (ID)",
|
label="Role (ID)",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
(
|
(
|
||||||
None,
|
None,
|
||||||
(
|
(
|
||||||
"device_role_id",
|
"role_id",
|
||||||
"id",
|
"id",
|
||||||
"status",
|
"status",
|
||||||
),
|
),
|
||||||
@@ -71,7 +71,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
region_id = DynamicModelMultipleChoiceField(
|
region_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Region.objects.all(), required=False, label=_("Region")
|
queryset=Region.objects.all(), required=False, label=_("Region")
|
||||||
)
|
)
|
||||||
device_role_id = DynamicModelMultipleChoiceField(
|
role_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=DeviceRole.objects.all(), required=False, label=_("Device Role")
|
queryset=DeviceRole.objects.all(), required=False, label=_("Device Role")
|
||||||
)
|
)
|
||||||
id = DynamicModelMultipleChoiceField(
|
id = DynamicModelMultipleChoiceField(
|
||||||
@@ -82,7 +82,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
"location_id": "$location_id",
|
"location_id": "$location_id",
|
||||||
"region_id": "$region_id",
|
"region_id": "$region_id",
|
||||||
"site_id": "$site_id",
|
"site_id": "$site_id",
|
||||||
"role_id": "$device_role_id",
|
"role_id": "$role_id",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
site_id = DynamicModelMultipleChoiceField(
|
site_id = DynamicModelMultipleChoiceField(
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ coordinategroup_buttons = (
|
|||||||
title='Add',
|
title='Add',
|
||||||
icon_class='mdi mdi-plus-thick',
|
icon_class='mdi mdi-plus-thick',
|
||||||
color=ButtonColorChoices.GREEN,
|
color=ButtonColorChoices.GREEN,
|
||||||
|
permissions=['netbox_topology_views.add_coordinategroup']
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
link='plugins:netbox_topology_views:coordinategroup_import',
|
link='plugins:netbox_topology_views:coordinategroup_import',
|
||||||
title='Import',
|
title='Import',
|
||||||
icon_class='mdi mdi-upload',
|
icon_class='mdi mdi-upload',
|
||||||
color=ButtonColorChoices.CYAN,
|
color=ButtonColorChoices.CYAN,
|
||||||
|
permissions=['netbox_topology_views.add_coordinategroup']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,12 +24,14 @@ coordinate_buttons = (
|
|||||||
title='Add',
|
title='Add',
|
||||||
icon_class='mdi mdi-plus-thick',
|
icon_class='mdi mdi-plus-thick',
|
||||||
color=ButtonColorChoices.GREEN,
|
color=ButtonColorChoices.GREEN,
|
||||||
|
permissions=['netbox_topology_views.add_coordinate']
|
||||||
),
|
),
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
link='plugins:netbox_topology_views:coordinate_import',
|
link='plugins:netbox_topology_views:coordinate_import',
|
||||||
title='Import',
|
title='Import',
|
||||||
icon_class='mdi mdi-upload',
|
icon_class='mdi mdi-upload',
|
||||||
color=ButtonColorChoices.CYAN,
|
color=ButtonColorChoices.CYAN,
|
||||||
|
permissions=['netbox_topology_views.add_coordinate']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -37,15 +41,15 @@ menu = PluginMenu(
|
|||||||
groups=(
|
groups=(
|
||||||
('TOPOLOGY',
|
('TOPOLOGY',
|
||||||
(
|
(
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:home", link_text="Topology"),
|
PluginMenuItem(link="plugins:netbox_topology_views:home", link_text="Topology", permissions=["dcim.view_site", "dcim.view_device"]),
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:coordinategroup_list", link_text="Coordinate Groups", buttons=coordinategroup_buttons),
|
PluginMenuItem(link="plugins:netbox_topology_views:coordinategroup_list", link_text="Coordinate Groups", buttons=coordinategroup_buttons, permissions=['netbox_topology_views.view_coordinategroup']),
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:coordinate_list", link_text="Coordinates", buttons=coordinate_buttons),
|
PluginMenuItem(link="plugins:netbox_topology_views:coordinate_list", link_text="Coordinates", buttons=coordinate_buttons, permissions=['netbox_topology_views.view_coordinate']),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
('PREFERENCES',
|
('PREFERENCES',
|
||||||
(
|
(
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:images", link_text="Images"),
|
PluginMenuItem(link="plugins:netbox_topology_views:images", link_text="Images", permissions=[ "dcim.view_site","dcim.view_device_role"]),
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:individualoptions", link_text="Individual Options"),
|
PluginMenuItem(link="plugins:netbox_topology_views:individualoptions", link_text="Individual Options", permissions=['netbox_topology_views.change_individualoptions']),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "netbox_topology_views",
|
"name": "netbox_topology_views",
|
||||||
"version": "3.6.0",
|
"version": "3.6.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "netbox_topology_views",
|
"name": "netbox_topology_views",
|
||||||
"version": "3.6.0",
|
"version": "3.6.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vis-data": "^7.1.6",
|
"vis-data": "^7.1.6",
|
||||||
"vis-network": "^9.1.6",
|
"vis-network": "^9.1.6",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "netbox_topology_views",
|
"name": "netbox_topology_views",
|
||||||
"version": "3.6.0",
|
"version": "3.7.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"bundle": "node bundle.js",
|
"bundle": "node bundle.js",
|
||||||
"bundle:styles": "node bundle.js --styles",
|
"bundle:styles": "node bundle.js --styles",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ urlpatterns = (
|
|||||||
# Coordinate Group
|
# Coordinate Group
|
||||||
path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroup_list"),
|
path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroup_list"),
|
||||||
path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroup_add"),
|
path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroup_add"),
|
||||||
path('coordinate/import/', views.CoordinateGroupBulkImportView.as_view(), name='coordinategroup_import'),
|
path('coordinate-groups/import/', views.CoordinateGroupBulkImportView.as_view(), name='coordinategroup_import'),
|
||||||
path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroup"),
|
path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroup"),
|
||||||
path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"),
|
path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"),
|
||||||
path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"),
|
path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"),
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ from netbox_topology_views.utils import (
|
|||||||
def get_image_for_entity(entity: Union[Device, Circuit, PowerPanel, PowerFeed]):
|
def get_image_for_entity(entity: Union[Device, Circuit, PowerPanel, PowerFeed]):
|
||||||
is_device = isinstance(entity, Device)
|
is_device = isinstance(entity, Device)
|
||||||
query = (
|
query = (
|
||||||
{"object_id": entity.device_role_id}
|
{"object_id": entity.role_id}
|
||||||
if is_device
|
if is_device
|
||||||
else {"content_type_id": ContentType.objects.get_for_model(entity).pk}
|
else {"content_type_id": ContentType.objects.get_for_model(entity).pk}
|
||||||
)
|
)
|
||||||
@@ -653,7 +653,7 @@ class TopologyHomeView(PermissionRequiredMixin, View):
|
|||||||
def get(self, request):
|
def get(self, request):
|
||||||
self.filterset = DeviceFilterSet
|
self.filterset = DeviceFilterSet
|
||||||
self.queryset = Device.objects.all().select_related(
|
self.queryset = Device.objects.all().select_related(
|
||||||
"device_type", "device_role"
|
"device_type", "role"
|
||||||
)
|
)
|
||||||
self.queryset = self.filterset(request.GET, self.queryset).qs
|
self.queryset = self.filterset(request.GET, self.queryset).qs
|
||||||
self.model = self.queryset.model
|
self.model = self.queryset.model
|
||||||
@@ -694,7 +694,7 @@ class TopologyHomeView(PermissionRequiredMixin, View):
|
|||||||
preselected_tags = IndividualOptions.objects.get(id=individualOptions.id).preselected_tags.all().values_list(Lower('name'), flat=True)
|
preselected_tags = IndividualOptions.objects.get(id=individualOptions.id).preselected_tags.all().values_list(Lower('name'), flat=True)
|
||||||
|
|
||||||
q = QueryDict(mutable=True)
|
q = QueryDict(mutable=True)
|
||||||
q.setlist("device_role_id", list(preselected_device_roles))
|
q.setlist("role_id", list(preselected_device_roles))
|
||||||
q.setlist("tag", list(preselected_tags))
|
q.setlist("tag", list(preselected_tags))
|
||||||
|
|
||||||
if individualOptions.save_coords: q['save_coords'] = "on"
|
if individualOptions.save_coords: q['save_coords'] = "on"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ long_description = readme.read_text()
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="netbox-topology-views",
|
name="netbox-topology-views",
|
||||||
version="3.6.0",
|
version="3.7.0",
|
||||||
description="An NetBox plugin to create Topology maps",
|
description="An NetBox plugin to create Topology maps",
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
|
|||||||
Reference in New Issue
Block a user