Added bulk import
This commit is contained in:
@@ -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 = (
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user