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.models import TenantGroup, Tenant
from tenancy.forms import TenancyFilterForm from tenancy.forms import TenancyFilterForm
from django.conf import settings from django.conf import settings
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm, NetBoxModelImportForm
from utilities.forms.fields import ( from utilities.forms.fields import (
TagFilterField, TagFilterField,
DynamicModelMultipleChoiceField, DynamicModelMultipleChoiceField,
@@ -159,6 +159,11 @@ class CoordinateGroupsForm(NetBoxModelForm):
model = CoordinateGroup model = CoordinateGroup
fields = ('name', 'description') fields = ('name', 'description')
class CoordinateGroupsImportForm(NetBoxModelImportForm):
class Meta:
model = CoordinateGroup
fields = ('name', 'description')
class CoordinatesForm(NetBoxModelForm): class CoordinatesForm(NetBoxModelForm):
fieldsets = ( fieldsets = (
('Coordinate', ('group', 'device', 'x', 'y')), ('Coordinate', ('group', 'device', 'x', 'y')),
@@ -168,6 +173,11 @@ class CoordinatesForm(NetBoxModelForm):
model = Coordinate model = Coordinate
fields = ('group', 'device', 'x', 'y') fields = ('group', 'device', 'x', 'y')
class CoordinatesImportForm(NetBoxModelImportForm):
class Meta:
model = Coordinate
fields = ('group', 'device', 'x', 'y')
class CoordinatesFilterForm(NetBoxModelFilterSetForm): class CoordinatesFilterForm(NetBoxModelFilterSetForm):
model = Coordinate model = Coordinate
fieldsets = ( fieldsets = (
+16 -4
View File
@@ -1,23 +1,35 @@
from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton
from utilities.choices import ButtonColorChoices from utilities.choices import ButtonColorChoices
coordinategroup_buttons = [ coordinategroup_buttons = (
PluginMenuButton( PluginMenuButton(
link='plugins:netbox_topology_views:coordinategroup_add', link='plugins:netbox_topology_views:coordinategroup_add',
title='Add', title='Add',
icon_class='mdi mdi-plus-thick', icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN, 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( PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_add', link='plugins:netbox_topology_views:coordinate_add',
title='Add', title='Add',
icon_class='mdi mdi-plus-thick', icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN, color=ButtonColorChoices.GREEN,
),
PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_import',
title='Import',
icon_class='mdi mdi-upload',
color=ButtonColorChoices.CYAN,
) )
] )
menu = PluginMenu( menu = PluginMenu(
label='Topology Views', label='Topology Views',
+2
View File
@@ -14,6 +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/<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"),
@@ -22,6 +23,7 @@ urlpatterns = (
# Coordinate # Coordinate
path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"), path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"),
path("coordinate/add/", views.CoordinateAddView.as_view(), name="coordinate_add"), 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>/", views.CoordinateView.as_view(), name="coordinate"),
path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"), path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"),
path("coordinate/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"), 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 django.views.generic import View
from extras.models import Tag from extras.models import Tag
from wireless.models import WirelessLink 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.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.models import RoleImage, CoordinateGroup, Coordinate, IndividualOptions
from netbox_topology_views.tables import CoordinateGroupListTable, CoordinateListTable from netbox_topology_views.tables import CoordinateGroupListTable, CoordinateListTable
from netbox_topology_views.utils import ( from netbox_topology_views.utils import (
@@ -791,6 +806,10 @@ class CoordinateAddView(PermissionRequiredMixin, ObjectEditView):
form = CoordinatesForm form = CoordinatesForm
template_name = 'netbox_topology_views/coordinate_add.html' template_name = 'netbox_topology_views/coordinate_add.html'
class CoordinateBulkImportView(BulkImportView):
queryset = Coordinate.objects.all()
model_form = CoordinatesImportForm
class CoordinateListView(PermissionRequiredMixin, ObjectListView): class CoordinateListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'netbox_topology_views.view_coordinate' permission_required = 'netbox_topology_views.view_coordinate'
@@ -837,6 +856,10 @@ class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
form = CoordinateGroupsForm form = CoordinateGroupsForm
template_name = 'netbox_topology_views/coordinategroup_add.html' template_name = 'netbox_topology_views/coordinategroup_add.html'
class CoordinateGroupBulkImportView(BulkImportView):
queryset = CoordinateGroup.objects.all()
model_form = CoordinateGroupsImportForm
class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView): class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'netbox_topology_views.view_coordinategroup' permission_required = 'netbox_topology_views.view_coordinategroup'