Compare commits

...
2 Commits
Author SHA1 Message Date
Mattijs Vanhaverbeke d927e40867 bump version 2022-03-25 13:16:00 +01:00
Jeremy Stretchandmattieserver 62c0dbddb2 Initial work on NetBox v3.2 support (#88)
Co-authored-by: mattieserver <3049868+mattieserver@users.noreply.github.com>
2022-03-25 13:13:33 +01:00
10 changed files with 57 additions and 65 deletions
+1 -1
View File
@@ -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.3'
version = '1.1.0-beta.1'
author = 'Mattijs Vanhaverbeke'
author_email = 'author@example.com'
base_url = 'netbox_topology_views'
-3
View File
@@ -1,3 +0,0 @@
from django.contrib import admin
#no models yet
+13 -10
View File
@@ -1,18 +1,21 @@
import django_filters
from extras.filters import TagFilter
from dcim.models import Device, DeviceRole, Region, Site, Location
from tenancy.models import TenantGroup, Tenant
from tenancy.filtersets import TenancyFilterSet
from utilities.filters import TreeNodeMultipleChoiceFilter
from django.db.models import Q
class DeviceFilterSet(TenancyFilterSet, django_filters.FilterSet):
from dcim.models import Device, DeviceRole, Region, Site, Location
from netbox.filtersets import NetBoxModelFilterSet
from tenancy.models import TenantGroup, Tenant
from tenancy.filtersets import TenancyFilterSet
from utilities.filters import TreeNodeMultipleChoiceFilter
class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
q = django_filters.CharFilter(
method='search',
label='Search',
)
tag = TagFilter()
device_role_id = django_filters.ModelMultipleChoiceFilter(
field_name='device_role_id',
queryset=DeviceRole.objects.all(),
@@ -37,7 +40,7 @@ class DeviceFilterSet(TenancyFilterSet, django_filters.FilterSet):
class Meta:
model = Device
fields = ['id', 'name', ]
fields = ['id', 'name']
def search(self, queryset, name, value):
"""Perform the filtered search."""
@@ -46,4 +49,4 @@ class DeviceFilterSet(TenancyFilterSet, django_filters.FilterSet):
qs_filter = (
Q(name__icontains=value)
)
return queryset.filter(qs_filter)
return queryset.filter(qs_filter)
+14 -12
View File
@@ -1,26 +1,30 @@
import imp
from django import forms
from django.conf import settings
from django.utils.translation import gettext as _
from extras.models import Tag
from dcim.models import Device, Site, Region, DeviceRole, Location
from django import forms
from tenancy.models import TenantGroup, Tenant
from tenancy.forms import TenancyFilterForm
from django.conf import settings
from netbox.forms import NetBoxModelFilterSetForm
from utilities.forms import (TagFilterField, DynamicModelMultipleChoiceField)
from utilities.forms import (TagFilterField, DynamicModelMultipleChoiceField, FilterForm)
allow_coordinates_saving = settings.PLUGINS_CONFIG["netbox_topology_views"]["allow_coordinates_saving"]
class DeviceFilterForm(TenancyFilterForm, FilterForm):
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Device
field_groups = [
['q', 'hide_unconnected', 'save_coords'],
['tenant_group_id', 'tenant_id'],
['region_id', 'site_id', 'location_id'],
['device_role_id'],
['tag'],
]
fieldsets = (
(None, ('q', 'hide_unconnected', 'save_coords')),
(None, ('tenant_group_id', 'tenant_id')),
(None, ('region_id', 'site_id', 'location_id')),
(None, ('device_role_id',)),
(None, ('tag',)),
)
region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(),
@@ -49,7 +53,6 @@ class DeviceFilterForm(TenancyFilterForm, FilterForm):
},
label=_('Location')
)
hide_unconnected = forms.BooleanField(
label=_("Hide Unconnected"),
required=False,
@@ -60,5 +63,4 @@ class DeviceFilterForm(TenancyFilterForm, FilterForm):
required=False,
disabled=(not allow_coordinates_saving),
initial=False)
tag = TagFilterField(model)
-3
View File
@@ -1,3 +0,0 @@
from django.db import models
# no modeles yet
+2 -10
View File
@@ -4,14 +4,6 @@ from utilities.choices import ButtonColorChoices
menu_items = (
PluginMenuItem(
link='plugins:netbox_topology_views:home',
link_text='Topology',
buttons=(
PluginMenuButton(
link='plugins:netbox_topology_views:home',
title='Topology View',
icon_class='mdi mdi-plus-thick',
permissions=[],
),
)
link_text='Topology'
),
)
)
@@ -36,7 +36,7 @@
<li class="nav-item" role="presentation">
<button class="nav-link" id="filters-form-tab" data-bs-toggle="tab" data-bs-target="#filters-form" type="button" role="tab" aria-controls="object-list" aria-selected="false">
Filters
{% if filter_form %}{% badge filter_form.changed_data|length bg_class="primary" %}{% endif %}
{% if filter_form %}{% badge filter_form.changed_data|length bg_color="blue" %}{% endif %}
</button>
</li>
{% endif %}
@@ -45,30 +45,31 @@
{% endblock tabs %}
{% block content-wrapper %}
{% with config=settings.PLUGINS_CONFIG.netbox_topology_views %}
<div class="tab-content">
{% with config=settings.PLUGINS_CONFIG.netbox_topology_views %}
<div class="tab-content">
<div class="tab-pane show active" id="networks" role="tabpanel" aria-labelledby="network-tab">
<div class="panel-body">
<div id="visgraph" class=""></div>
</div>
<div class="tab-pane show active" id="networks" role="tabpanel" aria-labelledby="network-tab">
<div class="panel-body">
<div id="visgraph" class=""></div>
</div>
<script type="text/javascript">
var topology_data = {{ topology_data | safe }};
</script>
</div>
<script type="text/javascript">
var topology_data = {{ topology_data | safe }};
</script>
</div>
{% if filter_form %}
<div class="tab-pane show" id="filters-form" role="tabpanel" aria-labelledby="filters-form-tab">
{% include 'inc/filter_list.html' %}
</div>
{% endif %}
{% if filter_form %}
<div class="tab-pane show" id="filters-form" role="tabpanel" aria-labelledby="filters-form-tab">
{% include 'inc/filter_list.html' %}
</div>
{% endif %}
</div>
<script src="{% static 'netbox_topology_views/js/vendor.js' %}"></script>
<script src="{% static 'netbox_topology_views/js/app.js' %}"></script>
<script type="application/javascript"> iniPlotboxIndex()</script>
{% endwith %}
</div>
{% endwith %}
{% endblock content-wrapper %}
{% block javascript %}
<script src="{% static 'netbox_topology_views/js/vendor.js' %}"></script>
<script src="{% static 'netbox_topology_views/js/app.js' %}"></script>
<script type="application/javascript">iniPlotboxIndex()</script>
{% endblock javascript %}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "netbox_topology_views",
"version": "1.0.3",
"version": "1.1.0-beta.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
+1 -1
View File
@@ -1,7 +1,7 @@
{
"private": true,
"name": "netbox_topology_views",
"version": "1.0.3",
"version": "1.1.0-beta.1",
"scripts": {
"resources": "gulp build",
"resources_dev": "gulp build_dev"
+1 -1
View File
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
setup(
name='netbox-topology-views',
version='1.0.3',
version='1.1.0-beta.1',
description='An NetBox plugin to create Topology maps',
url='https://github.com/mattieserver/netbox-topology-views',
author='Mattijs Vanhaverbeke',