Added bulk import

This commit is contained in:
dreng
2023-05-13 16:15:49 +02:00
parent c15613d7fe
commit 1f9295dead
4 changed files with 54 additions and 7 deletions
+11 -1
View File
@@ -12,7 +12,7 @@ from dcim.choices import DeviceStatusChoices
from tenancy.models import TenantGroup, Tenant
from tenancy.forms import TenancyFilterForm
from django.conf import settings
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm, NetBoxModelImportForm
from utilities.forms.fields import (
TagFilterField,
DynamicModelMultipleChoiceField,
@@ -159,6 +159,11 @@ class CoordinateGroupsForm(NetBoxModelForm):
model = CoordinateGroup
fields = ('name', 'description')
class CoordinateGroupsImportForm(NetBoxModelImportForm):
class Meta:
model = CoordinateGroup
fields = ('name', 'description')
class CoordinatesForm(NetBoxModelForm):
fieldsets = (
('Coordinate', ('group', 'device', 'x', 'y')),
@@ -168,6 +173,11 @@ class CoordinatesForm(NetBoxModelForm):
model = Coordinate
fields = ('group', 'device', 'x', 'y')
class CoordinatesImportForm(NetBoxModelImportForm):
class Meta:
model = Coordinate
fields = ('group', 'device', 'x', 'y')
class CoordinatesFilterForm(NetBoxModelFilterSetForm):
model = Coordinate
fieldsets = (
+16 -4
View File
@@ -1,23 +1,35 @@
from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton
from utilities.choices import ButtonColorChoices
coordinategroup_buttons = [
coordinategroup_buttons = (
PluginMenuButton(
link='plugins:netbox_topology_views:coordinategroup_add',
title='Add',
icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN,
),
PluginMenuButton(
link='plugins:netbox_topology_views:coordinategroup_import',
title='Import',
icon_class='mdi mdi-upload',
color=ButtonColorChoices.CYAN,
)
]
)
coordinate_buttons = [
coordinate_buttons = (
PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_add',
title='Add',
icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN,
),
PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_import',
title='Import',
icon_class='mdi mdi-upload',
color=ButtonColorChoices.CYAN,
)
]
)
menu = PluginMenu(
label='Topology Views',
+2
View File
@@ -14,6 +14,7 @@ urlpatterns = (
# Coordinate Group
path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroup_list"),
path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroup_add"),
path('coordinate/import/', views.CoordinateGroupBulkImportView.as_view(), name='coordinategroup_import'),
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>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"),
@@ -22,6 +23,7 @@ urlpatterns = (
# Coordinate
path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"),
path("coordinate/add/", views.CoordinateAddView.as_view(), name="coordinate_add"),
path('coordinate/import/', views.CoordinateBulkImportView.as_view(), name='coordinate_import'),
path("coordinate/<int:pk>/", views.CoordinateView.as_view(), name="coordinate"),
path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"),
path("coordinate/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"),
+25 -2
View File
@@ -29,11 +29,26 @@ from django.shortcuts import render, get_object_or_404
from django.views.generic import View
from extras.models import Tag
from wireless.models import WirelessLink
from netbox.views.generic import ObjectView, ObjectListView, ObjectEditView, ObjectDeleteView, ObjectChangeLogView
from netbox.views.generic import (
ObjectView,
ObjectListView,
ObjectEditView,
ObjectDeleteView,
ObjectChangeLogView,
BulkImportView
)
from netbox_topology_views.filters import DeviceFilterSet, CoordinatesFilterSet
from netbox_topology_views.forms import DeviceFilterForm, IndividualOptionsForm, CoordinateGroupsForm, CoordinatesForm, CoordinatesFilterForm
from netbox_topology_views.forms import (
DeviceFilterForm,
IndividualOptionsForm,
CoordinateGroupsForm,
CoordinatesForm,
CoordinatesFilterForm,
CoordinateGroupsImportForm,
CoordinatesImportForm
)
from netbox_topology_views.models import RoleImage, CoordinateGroup, Coordinate, IndividualOptions
from netbox_topology_views.tables import CoordinateGroupListTable, CoordinateListTable
from netbox_topology_views.utils import (
@@ -791,6 +806,10 @@ class CoordinateAddView(PermissionRequiredMixin, ObjectEditView):
form = CoordinatesForm
template_name = 'netbox_topology_views/coordinate_add.html'
class CoordinateBulkImportView(BulkImportView):
queryset = Coordinate.objects.all()
model_form = CoordinatesImportForm
class CoordinateListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'netbox_topology_views.view_coordinate'
@@ -837,6 +856,10 @@ class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
form = CoordinateGroupsForm
template_name = 'netbox_topology_views/coordinategroup_add.html'
class CoordinateGroupBulkImportView(BulkImportView):
queryset = CoordinateGroup.objects.all()
model_form = CoordinateGroupsImportForm
class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'netbox_topology_views.view_coordinategroup'