From 4f6a27c43de75c5cac4a168276134df2d30a7ad8 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 16:28:06 -0400 Subject: [PATCH 01/13] changed menu to top level --- netbox_slm/navigation.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index ae53bec..c4fde17 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -1,6 +1,6 @@ from netbox.plugins import PluginMenuButton, PluginMenuItem -menu_items = ( +items = ( PluginMenuItem( link="plugins:netbox_slm:softwareproduct_list", link_text="Software Products", @@ -54,3 +54,9 @@ ), ), ) + +menu = PluginMenu( + label="Software", + groups=(("SOFTWARE MANAGMENT", items),), + icon_class="mdi mdi-content-save", +) From b42b5dece54887ae0b534f272e077ede4e711bac Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 16:29:23 -0400 Subject: [PATCH 02/13] fixed import --- netbox_slm/navigation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index c4fde17..ca95ec5 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -1,4 +1,4 @@ -from netbox.plugins import PluginMenuButton, PluginMenuItem +from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu items = ( PluginMenuItem( From 55601045d61624dec7195b96884623d9d2e6abbb Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 17:22:59 -0400 Subject: [PATCH 03/13] Rearranged software product field to higher in the list via form --- netbox_slm/forms/software_license.py | 2 +- netbox_slm/forms/software_product_version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox_slm/forms/software_license.py b/netbox_slm/forms/software_license.py index c0dbc67..3dcccca 100644 --- a/netbox_slm/forms/software_license.py +++ b/netbox_slm/forms/software_license.py @@ -46,6 +46,7 @@ class Meta: fields = ( "name", "description", + "software_product", "type", "stored_location", "stored_location_url", @@ -53,7 +54,6 @@ class Meta: "expiration_date", "support", "license_amount", - "software_product", "version", "installation", "tags", diff --git a/netbox_slm/forms/software_product_version.py b/netbox_slm/forms/software_product_version.py index fd2c74f..83cd706 100644 --- a/netbox_slm/forms/software_product_version.py +++ b/netbox_slm/forms/software_product_version.py @@ -25,6 +25,7 @@ class Meta: model = SoftwareProductVersion fields = ( "name", + "software_product", "release_date", "documentation_url", "end_of_support", @@ -32,7 +33,6 @@ class Meta: "file_checksum", "file_link", "release_type", - "software_product", "tags", "comments", ) From c2026791a0087d11665a352e88317a1259e92b20 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 17:42:43 -0400 Subject: [PATCH 04/13] added config item to allow for top level menu or plugin menu --- netbox_slm/navigation.py | 20 ++++++++++++++------ netbox_slm/views/software_license.py | 5 +++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index ca95ec5..93091ec 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -1,4 +1,7 @@ -from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu +from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu, config +from django.conf import settings + +plugin_settings = settings.PLUGINS_CONFIG["netbox_slm"] items = ( PluginMenuItem( @@ -55,8 +58,13 @@ ), ) -menu = PluginMenu( - label="Software", - groups=(("SOFTWARE MANAGMENT", items),), - icon_class="mdi mdi-content-save", -) + + +if plugin_settings.get("top_level_menu"): + menu = PluginMenu( + label="Software", + groups=(("SOFTWARE MANAGMENT", items),), + icon_class="mdi mdi-content-save", + ) +else: + menu_items = items diff --git a/netbox_slm/views/software_license.py b/netbox_slm/views/software_license.py index b57e754..4a694f5 100644 --- a/netbox_slm/views/software_license.py +++ b/netbox_slm/views/software_license.py @@ -34,3 +34,8 @@ class SoftwareLicenseDeleteView(generic.ObjectDeleteView): class SoftwareLicenseBulkDeleteView(generic.BulkDeleteView): queryset = SoftwareLicense.objects.all() table = tables.SoftwareLicenseTable + + +class SoftwareLicenseBulkImportView(generic.BulkImportView): + queryset = SoftwareLicense.objects.all() + table = tables.SoftwareLicenseTable From 7eca2a5dfc51ead3a09a00786f68249957c4635b Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:01:09 -0400 Subject: [PATCH 05/13] added bulk import --- netbox_slm/navigation.py | 24 +++++++++++++++++++ netbox_slm/urls.py | 5 ++++ netbox_slm/views/software_license.py | 4 +++- netbox_slm/views/software_product.py | 10 ++++++-- .../views/software_product_installation.py | 8 ++++++- netbox_slm/views/software_product_version.py | 9 ++++++- 6 files changed, 55 insertions(+), 5 deletions(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index 93091ec..ead7d5f 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -15,6 +15,12 @@ "mdi mdi-plus-thick", permissions=["netbox_slm.add_softwareproduct"], ), + PluginMenuButton( + "plugins:netbox_slm:softwareproduct_import", + "Import", + "mdi mdi-upload", + permissions=["netbox_slm.import_softwareproduct"], + ), ), ), PluginMenuItem( @@ -28,6 +34,12 @@ "mdi mdi-plus-thick", permissions=["netbox_slm.add_softwareproductversion"], ), + PluginMenuButton( + "plugins:netbox_slm:softwareproductversion_import", + "Import", + "mdi mdiupload", + permissions=["netbox_slm.import_softwareproductversion"], + ), ), ), PluginMenuItem( @@ -41,6 +53,12 @@ "mdi mdi-plus-thick", permissions=["netbox_slm.add_softwareproductinstallation"], ), + PluginMenuButton( + "plugins:netbox_slm:softwareproductinstallation_import", + "Import", + "mdi mdis-upload", + permissions=["netbox_slm.import_softwareproductinstallation"], + ), ), ), PluginMenuItem( @@ -54,6 +72,12 @@ "mdi mdi-plus-thick", permissions=["netbox_slm.add_softwarelicense"], ), + PluginMenuButton( + "plugins:netbox_slm:softwarelicense_import", + "Import", + "mdi mdi-upload", + permissions=["netbox_slm.import_softwarelicense"], + ), ), ), ) diff --git a/netbox_slm/urls.py b/netbox_slm/urls.py index 4856d47..7cbb2bf 100644 --- a/netbox_slm/urls.py +++ b/netbox_slm/urls.py @@ -93,4 +93,9 @@ name="softwarelicense_changelog", kwargs={"model": SoftwareLicense}, ), + path('software-products/import/', views.SoftwareProductBulkImportView.as_view(), name='softwareproduct_import'), + path('installations/import/', views.SoftwareProductInstallationBulkImportView.as_view(), name='softwareproductinstallation_import'), + path('versions/import/', views.SoftwareProductVersionBulkImportView.as_view(), name='softwareproductversion_import'), + path('licenses/import/', views.SoftwareLicenseBulkImportView.as_view(), name='softwarelicense_import'), + ] diff --git a/netbox_slm/views/software_license.py b/netbox_slm/views/software_license.py index 4a694f5..65f5600 100644 --- a/netbox_slm/views/software_license.py +++ b/netbox_slm/views/software_license.py @@ -1,5 +1,5 @@ from netbox.views import generic -from netbox_slm import filtersets, forms, tables +from netbox_slm import filtersets, forms, tables, models from netbox_slm.models import SoftwareLicense @@ -32,10 +32,12 @@ class SoftwareLicenseDeleteView(generic.ObjectDeleteView): class SoftwareLicenseBulkDeleteView(generic.BulkDeleteView): + queryset = SoftwareLicense.objects.all() table = tables.SoftwareLicenseTable class SoftwareLicenseBulkImportView(generic.BulkImportView): + queryset = SoftwareLicense.objects.all() table = tables.SoftwareLicenseTable diff --git a/netbox_slm/views/software_product.py b/netbox_slm/views/software_product.py index 2d8e6a8..5195732 100644 --- a/netbox_slm/views/software_product.py +++ b/netbox_slm/views/software_product.py @@ -1,5 +1,5 @@ from netbox.views import generic -from netbox_slm import filtersets, forms, tables +from netbox_slm import filtersets, forms, tables, models from netbox_slm.models import SoftwareProduct @@ -31,10 +31,16 @@ class SoftwareProductEditView(generic.ObjectEditView): class SoftwareProductDeleteView(generic.ObjectDeleteView): """View for deleting a SoftwareProduct instance""" - queryset = SoftwareProduct.objects.all() class SoftwareProductBulkDeleteView(generic.BulkDeleteView): + queryset = SoftwareProduct.objects.all() table = tables.SoftwareProductTable + + +class SoftwareProductBulkImportView(generic.BulkImportiew): + + queryset = SoftwareProduct.objects.all() + table = tables.SoftwareProductTable \ No newline at end of file diff --git a/netbox_slm/views/software_product_installation.py b/netbox_slm/views/software_product_installation.py index f0cf444..83ed3b2 100644 --- a/netbox_slm/views/software_product_installation.py +++ b/netbox_slm/views/software_product_installation.py @@ -1,5 +1,5 @@ from netbox.views import generic -from netbox_slm import filtersets, forms, tables +from netbox_slm import filtersets, forms, tables, models from netbox_slm.models import SoftwareProductInstallation @@ -32,5 +32,11 @@ class SoftwareProductInstallationDeleteView(generic.ObjectDeleteView): class SoftwareProductInstallationBulkDeleteView(generic.BulkDeleteView): + queryset = SoftwareProductInstallation.objects.all() table = tables.SoftwareProductInstallationTable + +class SoftwareProductInstallationBulkImportView(generic.BulkImportView): + + queryset = SoftwareProductInstallation.objects.all() + table = tables.SoftwareProductInstallationTable \ No newline at end of file diff --git a/netbox_slm/views/software_product_version.py b/netbox_slm/views/software_product_version.py index 7f89fca..fd576df 100644 --- a/netbox_slm/views/software_product_version.py +++ b/netbox_slm/views/software_product_version.py @@ -1,5 +1,5 @@ from netbox.views import generic -from netbox_slm import filtersets, forms, tables +from netbox_slm import filtersets, forms, tables, models from netbox_slm.models import SoftwareProductVersion @@ -36,5 +36,12 @@ class SoftwareProductVersionDeleteView(generic.ObjectDeleteView): class SoftwareProductVersionBulkDeleteView(generic.BulkDeleteView): + queryset = SoftwareProductVersion.objects.all() table = tables.SoftwareProductVersionTable + + +class SoftwareProductVersionBulkImportView(generic.BulkImportView): + + queryset = SoftwareProductVersion.objects.all() + table = tables.SoftwareProductVersionTable \ No newline at end of file From 9a9df996286d3c3b2b4c20693e6167cbdae39be0 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:02:47 -0400 Subject: [PATCH 06/13] typo --- netbox_slm/navigation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index ead7d5f..35c9935 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -1,4 +1,4 @@ -from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu, config +from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu from django.conf import settings plugin_settings = settings.PLUGINS_CONFIG["netbox_slm"] From 10429188e0413a56f1d803fe51d67bdc681d5a41 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:06:19 -0400 Subject: [PATCH 07/13] another typo --- netbox_slm/views/software_product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox_slm/views/software_product.py b/netbox_slm/views/software_product.py index 5195732..684d379 100644 --- a/netbox_slm/views/software_product.py +++ b/netbox_slm/views/software_product.py @@ -40,7 +40,7 @@ class SoftwareProductBulkDeleteView(generic.BulkDeleteView): table = tables.SoftwareProductTable -class SoftwareProductBulkImportView(generic.BulkImportiew): +class SoftwareProductBulkImportView(generic.BulkImportView): queryset = SoftwareProduct.objects.all() table = tables.SoftwareProductTable \ No newline at end of file From 311817b7f90dea656b76e3492e07c926b9fd3fc1 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:11:23 -0400 Subject: [PATCH 08/13] added classes to init --- netbox_slm/views/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/netbox_slm/views/__init__.py b/netbox_slm/views/__init__.py index 6a54180..37196f2 100644 --- a/netbox_slm/views/__init__.py +++ b/netbox_slm/views/__init__.py @@ -4,6 +4,8 @@ SoftwareLicenseEditView, SoftwareLicenseDeleteView, SoftwareLicenseBulkDeleteView, + SoftwareLicenseBulkImportView, + ) from .software_product import ( SoftwareProductListView, @@ -11,6 +13,8 @@ SoftwareProductEditView, SoftwareProductDeleteView, SoftwareProductBulkDeleteView, + SoftwareProductBulkImportView, + ) from .software_product_installation import ( SoftwareProductInstallationListView, @@ -18,6 +22,8 @@ SoftwareProductInstallationEditView, SoftwareProductInstallationDeleteView, SoftwareProductInstallationBulkDeleteView, + SoftwareProductInstallationBulkImportView, + ) from .software_product_version import ( SoftwareProductVersionListView, @@ -25,4 +31,6 @@ SoftwareProductVersionEditView, SoftwareProductVersionDeleteView, SoftwareProductVersionBulkDeleteView, + SoftwareProductVersionBulkImportView, + ) From b6917b5ef9ce9db62e14eec2c04cbeb300e3a30f Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:22:14 -0400 Subject: [PATCH 09/13] testing adding an import form --- netbox_slm/forms/__init__.py | 2 +- netbox_slm/forms/software_license.py | 23 ++++++++++++++++++++++- netbox_slm/navigation.py | 4 ++-- netbox_slm/views/software_license.py | 3 ++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/netbox_slm/forms/__init__.py b/netbox_slm/forms/__init__.py index f8d7033..5df7d6d 100644 --- a/netbox_slm/forms/__init__.py +++ b/netbox_slm/forms/__init__.py @@ -1,4 +1,4 @@ -from .software_license import SoftwareLicenseForm, SoftwareLicenseFilterForm +from .software_license import SoftwareLicenseForm, SoftwareLicenseFilterForm, SoftwareLicenseBulkImportForm from .software_product import SoftwareProductForm, SoftwareProductFilterForm from .software_product_installation import SoftwareProductInstallationForm, SoftwareProductInstallationFilterForm from .software_product_version import SoftwareProductVersionForm, SoftwareProductVersionFilterForm diff --git a/netbox_slm/forms/software_license.py b/netbox_slm/forms/software_license.py index 3dcccca..8273665 100644 --- a/netbox_slm/forms/software_license.py +++ b/netbox_slm/forms/software_license.py @@ -1,7 +1,7 @@ from django.forms import DateField from django.urls import reverse_lazy -from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm +from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm, NetBoxModelImportForm from netbox_slm.models import SoftwareProduct, SoftwareProductVersion, SoftwareProductInstallation, SoftwareLicense from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField, LaxURLField from utilities.forms.rendering import FieldSet @@ -65,3 +65,24 @@ class SoftwareLicenseFilterForm(NetBoxModelFilterSetForm): model = SoftwareLicense fieldsets = (FieldSet(None, ("q", "tag")),) tag = TagFilterField(model) + + +class SoftwareLicenseBulkImportForm(NetBoxModelImportForm): + class Meta: + model = SoftwareLicense + fields = ( + "name", + "description", + "software_product", + "type", + "stored_location", + "stored_location_url", + "start_date", + "expiration_date", + "support", + "license_amount", + "version", + "installation", + "tags", + "comments", + ) \ No newline at end of file diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index 35c9935..2aba780 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -37,7 +37,7 @@ PluginMenuButton( "plugins:netbox_slm:softwareproductversion_import", "Import", - "mdi mdiupload", + "mdi mdi-upload", permissions=["netbox_slm.import_softwareproductversion"], ), ), @@ -56,7 +56,7 @@ PluginMenuButton( "plugins:netbox_slm:softwareproductinstallation_import", "Import", - "mdi mdis-upload", + "mdi mdi-upload", permissions=["netbox_slm.import_softwareproductinstallation"], ), ), diff --git a/netbox_slm/views/software_license.py b/netbox_slm/views/software_license.py index 65f5600..c8fe8fb 100644 --- a/netbox_slm/views/software_license.py +++ b/netbox_slm/views/software_license.py @@ -1,5 +1,5 @@ from netbox.views import generic -from netbox_slm import filtersets, forms, tables, models +from netbox_slm import filtersets, forms, tables from netbox_slm.models import SoftwareLicense @@ -41,3 +41,4 @@ class SoftwareLicenseBulkImportView(generic.BulkImportView): queryset = SoftwareLicense.objects.all() table = tables.SoftwareLicenseTable + model_form = forms.SoftwareLienseBulkImportForm From 43cd008d74a01802f733cf8cb181f6265a4f098c Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:25:30 -0400 Subject: [PATCH 10/13] typo --- netbox_slm/views/software_license.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox_slm/views/software_license.py b/netbox_slm/views/software_license.py index c8fe8fb..8f8b6d4 100644 --- a/netbox_slm/views/software_license.py +++ b/netbox_slm/views/software_license.py @@ -41,4 +41,4 @@ class SoftwareLicenseBulkImportView(generic.BulkImportView): queryset = SoftwareLicense.objects.all() table = tables.SoftwareLicenseTable - model_form = forms.SoftwareLienseBulkImportForm + model_form = forms.SoftwareLicenseBulkImportForm From 7515ffd7955401210f9bf613b54465a02d511cbd Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:34:00 -0400 Subject: [PATCH 11/13] added forms to all classes for import --- netbox_slm/forms/software_product.py | 13 ++++++++++++- .../forms/software_product_installation.py | 16 +++++++++++++++- netbox_slm/forms/software_product_version.py | 19 ++++++++++++++++++- netbox_slm/views/software_product.py | 3 ++- .../views/software_product_installation.py | 3 ++- netbox_slm/views/software_product_version.py | 3 ++- 6 files changed, 51 insertions(+), 6 deletions(-) diff --git a/netbox_slm/forms/software_product.py b/netbox_slm/forms/software_product.py index 5e920d5..cc2e38d 100644 --- a/netbox_slm/forms/software_product.py +++ b/netbox_slm/forms/software_product.py @@ -1,5 +1,5 @@ from dcim.models import Manufacturer -from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm +from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm, NetBoxModelImportForm from netbox_slm.models import SoftwareProduct from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField from utilities.forms.rendering import FieldSet @@ -30,3 +30,14 @@ class SoftwareProductFilterForm(NetBoxModelFilterSetForm): model = SoftwareProduct fieldsets = (FieldSet(None, ("q", "tag")),) tag = TagFilterField(model) + +class SoftwareProductBulkImportForm(NetBoxModelImportForm): + class Meta: + model = SoftwareProduct + fields = ( + "name", + "description", + "manufacturer", + "tags", + "comments", + ) diff --git a/netbox_slm/forms/software_product_installation.py b/netbox_slm/forms/software_product_installation.py index f3d036e..7e848ae 100644 --- a/netbox_slm/forms/software_product_installation.py +++ b/netbox_slm/forms/software_product_installation.py @@ -2,7 +2,7 @@ from django.urls import reverse_lazy from dcim.models import Device -from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm +from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm, NetBoxModelImportForm from netbox_slm.models import SoftwareProductInstallation, SoftwareProduct, SoftwareProductVersion from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField from utilities.forms.rendering import FieldSet @@ -59,3 +59,17 @@ class SoftwareProductInstallationFilterForm(NetBoxModelFilterSetForm): model = SoftwareProductInstallation fieldsets = (FieldSet(None, ("q", "tag")),) tag = TagFilterField(model) + +class SoftwareProductInstallationBulkImportForm(NetBoxModelImportForm): + class Meta: + model = SoftwareProductInstallation + fields = ( + "device", + "virtualmachine", + "cluster", + "software_product", + "version", + "tags", + "comments", + ) + \ No newline at end of file diff --git a/netbox_slm/forms/software_product_version.py b/netbox_slm/forms/software_product_version.py index 83cd706..f4004e1 100644 --- a/netbox_slm/forms/software_product_version.py +++ b/netbox_slm/forms/software_product_version.py @@ -1,7 +1,7 @@ from django.forms import DateField from django.urls import reverse_lazy -from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm +from netbox.forms import NetBoxModelForm, NetBoxModelFilterSetForm, NetBoxModelImportForm from netbox_slm.models import SoftwareProduct, SoftwareProductVersion from utilities.forms.fields import CommentField, DynamicModelChoiceField, TagFilterField from utilities.forms.rendering import FieldSet @@ -42,3 +42,20 @@ class SoftwareProductVersionFilterForm(NetBoxModelFilterSetForm): model = SoftwareProductVersion fieldsets = (FieldSet(None, ("q", "tag")),) tag = TagFilterField(model) + +class SoftwareProductVersionBulkImportForm(NetBoxModelImportForm): + class Meta: + model = SoftwareProductVersion + fields = ( + "name", + "software_product", + "release_date", + "documentation_url", + "end_of_support", + "filename", + "file_checksum", + "file_link", + "release_type", + "tags", + "comments", + ) \ No newline at end of file diff --git a/netbox_slm/views/software_product.py b/netbox_slm/views/software_product.py index 684d379..74d9a53 100644 --- a/netbox_slm/views/software_product.py +++ b/netbox_slm/views/software_product.py @@ -43,4 +43,5 @@ class SoftwareProductBulkDeleteView(generic.BulkDeleteView): class SoftwareProductBulkImportView(generic.BulkImportView): queryset = SoftwareProduct.objects.all() - table = tables.SoftwareProductTable \ No newline at end of file + table = tables.SoftwareProductTable + model_form = forms.SoftwareProductBulkImportForm diff --git a/netbox_slm/views/software_product_installation.py b/netbox_slm/views/software_product_installation.py index 83ed3b2..2c6a915 100644 --- a/netbox_slm/views/software_product_installation.py +++ b/netbox_slm/views/software_product_installation.py @@ -39,4 +39,5 @@ class SoftwareProductInstallationBulkDeleteView(generic.BulkDeleteView): class SoftwareProductInstallationBulkImportView(generic.BulkImportView): queryset = SoftwareProductInstallation.objects.all() - table = tables.SoftwareProductInstallationTable \ No newline at end of file + table = tables.SoftwareProductInstallationTable + model_form = forms.SoftwareProductInstallationBulkImportForm diff --git a/netbox_slm/views/software_product_version.py b/netbox_slm/views/software_product_version.py index fd576df..974b76a 100644 --- a/netbox_slm/views/software_product_version.py +++ b/netbox_slm/views/software_product_version.py @@ -44,4 +44,5 @@ class SoftwareProductVersionBulkDeleteView(generic.BulkDeleteView): class SoftwareProductVersionBulkImportView(generic.BulkImportView): queryset = SoftwareProductVersion.objects.all() - table = tables.SoftwareProductVersionTable \ No newline at end of file + table = tables.SoftwareProductVersionTable + model_form = forms.SoftwareProductVersionBulkImportForm From 00c515949b0ebe36357138acada3cedd5c4cd617 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 18:41:25 -0400 Subject: [PATCH 12/13] forgot to add import classes to init.py --- netbox_slm/forms/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netbox_slm/forms/__init__.py b/netbox_slm/forms/__init__.py index 5df7d6d..15ffff5 100644 --- a/netbox_slm/forms/__init__.py +++ b/netbox_slm/forms/__init__.py @@ -1,4 +1,4 @@ from .software_license import SoftwareLicenseForm, SoftwareLicenseFilterForm, SoftwareLicenseBulkImportForm -from .software_product import SoftwareProductForm, SoftwareProductFilterForm -from .software_product_installation import SoftwareProductInstallationForm, SoftwareProductInstallationFilterForm -from .software_product_version import SoftwareProductVersionForm, SoftwareProductVersionFilterForm +from .software_product import SoftwareProductForm, SoftwareProductFilterForm, SoftwareProductBulkImportForm +from .software_product_installation import SoftwareProductInstallationForm, SoftwareProductInstallationFilterForm, SoftwareProductInstallationBulkImportForm +from .software_product_version import SoftwareProductVersionForm, SoftwareProductVersionFilterForm, SoftwareProductVersionBulkImportForm From 2da5c9eba4a6665cbeec7808bc92dee2794eb947 Mon Sep 17 00:00:00 2001 From: Eric Hester Date: Sun, 13 Oct 2024 19:04:21 -0400 Subject: [PATCH 13/13] . --- netbox_slm/navigation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox_slm/navigation.py b/netbox_slm/navigation.py index 2aba780..2e7767c 100644 --- a/netbox_slm/navigation.py +++ b/netbox_slm/navigation.py @@ -86,8 +86,8 @@ if plugin_settings.get("top_level_menu"): menu = PluginMenu( - label="Software", - groups=(("SOFTWARE MANAGMENT", items),), + label="Software Lifecycle", + groups=(("SOFTWARE Lifecycle", items),), icon_class="mdi mdi-content-save", ) else: