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=[]),
),
),