diff --git a/netbox/netbox/forms/mixins.py b/netbox/netbox/forms/mixins.py index 4c9e46c0e..8ecca73e1 100644 --- a/netbox/netbox/forms/mixins.py +++ b/netbox/netbox/forms/mixins.py @@ -15,6 +15,9 @@ __all__ = ( class ChangeLoggingMixin(forms.Form): + """ + Adds an optional field for recording a message on the resulting changelog record(s). + """ changelog_message = forms.CharField( required=False, max_length=200 diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 246f41f3b..36223fd20 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -424,7 +424,6 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): } if prefetch_ids else {} for i, record in enumerate(records, start=1): - instance = None object_id = int(record.pop('id')) if record.get('id') else None # Determine whether this object is being created or updated @@ -440,6 +439,8 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): instance.snapshot() else: + instance = self.queryset.model() + # For newly created objects, apply any default custom field values custom_fields = CustomField.objects.filter( object_types=ContentType.objects.get_for_model(self.queryset.model), @@ -450,6 +451,9 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): if field_name not in record: record[field_name] = cf.default + # Record changelog message (if any) + instance._changelog_message = form.cleaned_data.pop('changelog_message', '') + # Instantiate the model form for the object model_form_kwargs = { 'data': record, diff --git a/netbox/templates/generic/bulk_import.html b/netbox/templates/generic/bulk_import.html index f4a67cc1f..0e83afcb3 100644 --- a/netbox/templates/generic/bulk_import.html +++ b/netbox/templates/generic/bulk_import.html @@ -42,32 +42,31 @@ Context: {# Data Import Form #}