From f316d3d601a05853c94665c6a76dd44e69443334 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Thu, 4 May 2023 23:56:42 +0530 Subject: [PATCH] adds bulk import for journal entry #12122 --- netbox/extras/forms/bulk_import.py | 15 +++++++++++++++ netbox/extras/urls.py | 1 + netbox/extras/views.py | 7 ++++++- netbox/netbox/navigation/menu.py | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/netbox/extras/forms/bulk_import.py b/netbox/extras/forms/bulk_import.py index c344a3214..57297a529 100644 --- a/netbox/extras/forms/bulk_import.py +++ b/netbox/extras/forms/bulk_import.py @@ -7,6 +7,7 @@ from django.utils.translation import gettext as _ from extras.choices import CustomFieldVisibilityChoices, CustomFieldTypeChoices from extras.models import * from extras.utils import FeatureQuery +from netbox.forms import NetBoxModelImportForm from utilities.forms import CSVModelForm from utilities.forms.fields import CSVChoiceField, CSVContentTypeField, CSVMultipleContentTypeField, SlugField @@ -15,6 +16,7 @@ __all__ = ( 'CustomFieldImportForm', 'CustomLinkImportForm', 'ExportTemplateImportForm', + 'JournalEntryImportForm', 'SavedFilterImportForm', 'TagImportForm', 'WebhookImportForm', @@ -132,3 +134,16 @@ class TagImportForm(CSVModelForm): help_texts = { 'color': mark_safe(_('RGB color in hexadecimal (e.g. 00ff00)')), } + + +class JournalEntryImportForm(NetBoxModelImportForm): + assigned_object_type = CSVContentTypeField( + queryset=ContentType.objects.all(), + label=_('Assigned object type'), + ) + + class Meta: + model = JournalEntry + fields = ( + 'assigned_object_type', 'assigned_object_id', 'created_by', 'kind', 'comments', 'tags' + ) \ No newline at end of file diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index f04c53add..fdc272457 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -81,6 +81,7 @@ urlpatterns = [ path('journal-entries/add/', views.JournalEntryEditView.as_view(), name='journalentry_add'), path('journal-entries/edit/', views.JournalEntryBulkEditView.as_view(), name='journalentry_bulk_edit'), path('journal-entries/delete/', views.JournalEntryBulkDeleteView.as_view(), name='journalentry_bulk_delete'), + path('journal-entries/import/', views.JournalEntryBulkImportView.as_view(), name='journalentry_import'), path('journal-entries//', include(get_model_urls('extras', 'journalentry'))), # Change logging diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 286ec76cd..727600faa 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -617,7 +617,7 @@ class JournalEntryListView(generic.ObjectListView): filterset = filtersets.JournalEntryFilterSet filterset_form = forms.JournalEntryFilterForm table = tables.JournalEntryTable - actions = ('export', 'bulk_edit', 'bulk_delete') + actions = ('import', 'export', 'bulk_edit', 'bulk_delete') @register_model_view(JournalEntry) @@ -666,6 +666,11 @@ class JournalEntryBulkDeleteView(generic.BulkDeleteView): table = tables.JournalEntryTable +class JournalEntryBulkImportView(generic.BulkImportView): + queryset = JournalEntry.objects.all() + model_form = forms.JournalEntryImportForm + + # # Dashboard & widgets # diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index 2b1428d27..97e3fad92 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -336,7 +336,7 @@ OPERATIONS_MENU = Menu( MenuGroup( label=_('Logging'), items=( - get_model_item('extras', 'journalentry', _('Journal Entries'), actions=[]), + get_model_item('extras', 'journalentry', _('Journal Entries'), actions=['import']), get_model_item('extras', 'objectchange', _('Change Log'), actions=[]), ), ),