From b8d7c8bc0d5c99f2d4e950c0eeedd38240633f52 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 25 Apr 2023 11:43:59 -0700 Subject: [PATCH] 11617 special case DeviceType and ModuleType --- netbox/netbox/views/generic/bulk_views.py | 3 ++- netbox/utilities/forms/utils.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 0d670eb77..0e7bfdcd7 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -15,6 +15,7 @@ from django.urls import reverse from django.utils.safestring import mark_safe from django_tables2.export import TableExport +from dcim.forms.bulk_import import DeviceTypeImportForm, ModuleTypeImportForm from extras.models import ExportTemplate from extras.signals import clear_webhooks from utilities.error_handlers import handle_protectederror @@ -406,7 +407,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): ] if not headers: headers = headers_to_dict(list(record.keys())) - validate_import_headers(headers, form_fields, required_fields) + validate_import_headers(headers, form_fields, required_fields, allow_extra_columns=isinstance(model_form, (DeviceTypeImportForm, ModuleTypeImportForm))) # When updating, omit all form fields other than those specified in the record. (No # fields are required when modifying an existing object.) diff --git a/netbox/utilities/forms/utils.py b/netbox/utilities/forms/utils.py index 1b3088998..eb880c4fe 100644 --- a/netbox/utilities/forms/utils.py +++ b/netbox/utilities/forms/utils.py @@ -251,7 +251,7 @@ def parse_csv(reader): return headers, records -def validate_import_headers(headers, fields, required_fields): +def validate_import_headers(headers, fields, required_fields, allow_extra_columns=False): """ Validate that parsed csv data conforms to the object's available fields. Raise validation errors if parsed csv data contains invalid headers or does not contain required headers. @@ -262,7 +262,7 @@ def validate_import_headers(headers, fields, required_fields): if field == "id": is_update = True continue - if field not in fields: + if (not allow_extra_columns) and (field not in fields): raise forms.ValidationError(f'Unexpected column header "{field}" found.') if to_field and not hasattr(fields[field], 'to_field_name'): raise forms.ValidationError(f'Column "{field}" is not a related object; cannot use dots')